ToBeMaster-JAVA / Standard-JAVA-Basic

0 stars 0 forks source link

4주차 학습분량 #5

Closed yummygyudon closed 2 years ago

yummygyudon commented 2 years ago

1. 교재

: 「Chapter 7. 객체지향 프로그래밍 ll 」

기간 : 2022.01.15 ~ 2022.01.21

*방법은 이전 주와 동일

2. Conf

2022.01.29 ~ 2022.02.04 (6주차)


red-Pen9uin commented 2 years ago

《 Chap.1 : 객체지향 언어 ~ Chap.6 : 객체의 생성과 사용 》

Q1 . 클래스, 객체, 인스턴스에 대해서 설명하시오. (객체와 인스턴스는 서로 비교하면서 설명하시오)

​ 객체는 클래스와 인스턴스를 모두 포괄하는 일반적인 개념이며, 클래스는 객체에 대해 정의해놓은 것, 인스턴스는 정의된 클래스를 이용해 생성된 것을 의미한다.

Q2. 다음 중 소스파일의 이름이 잘못 작성된 것을 모두 고르시오.

(2)??

Hello2.java
-----------------------
class Hello2 {}
class Hello3 {}

(3)

Hello2.java
-----------------------
public class Hello2 {}
public class Hello3 {}

(4)

Hello3.java
-----------------------
public class Hello2 {}
       class Hello3 {}

《 Chap.7 : 객체의 생성과 사용 예제 ~ Chap.12 : 클래스 변수와 인스턴스 변수 》

Q1. 인스턴스 변수와 클래스 변수의 공통점(1개)와 차이점(2개 또는 3개)를 말하시오.

​ 인스턴스 변수와 클래스 변수는 같이 한 클래스 내에서 정의되지만 클래스 변수는 모든 인스턴스에서 동일한 값을 가지고, 클래스가 로딩되는 단 한 순간 초기화되지만 인스턴스 변수는 모든 인스턴스에서 다른 값을 가질 수 있다.

​ 클래스 변수는 클래스 이름을 통해 사용가능하다.

Q2. 클래스의 정의가 아닌 것은?

​ b. 같은 종류의 여러 데이터의 집합과 함수를 함께 다룰 수 있도록 결합한 것


《 Chap.13, Chap.14 : 메서드란? ~ Chap.18 : 메서드의 실행 흐름 》

Q1. 메서드란 객체지향개념에서 함수를 의미하며, 특정 작업을 수행하는 단위로 문장들을 하나로 묶은 것을 의미한다. 또한, 클래스 안에 반드시 있어야 한다. 메서드의 장점 4개는? hint : ㅈㅂ, ㄱㄹ, ㅈㅅㅇ, ㄱㄱ

​ 클래스가 메소드를 가지고 필요한 기능을 직접 수행하는 것으로 코드의 재사용성을 높일 수 있다. (재사용) ​ 메소드를 통한 캡슐화로 외부에서 클래스의 데이터를 함부로 변화시키는 것을 막을 수 있다. (가림..)

더는 모르겠음..

Q2. 다음은 메서드를 실행하는 코드이다. 메서드 실행 흐름을 순서대로 나열하시오.

ㄷ - ㄱ - ㄴ


《 Chap.19 : 메서드의 실행 흐름 예제 ~ Chap.25 : 참조형 반환 타입

Q1 . 반환값의 유무에 관계없이 모든 메서드는 하나의 return문이 있어야 하는데, return문을 안써도 되는 경우는 어떤 경우인가?

모르겠음. 그냥.. 다 쓰는거아닌가요?(자바를 C처럼 하고있어요)

Q2 . 매개변수의 타입이 < >일 때는 read & write이고 , 매개변수의 타입이 < >일 때는 read only이다. <>안에 들어갈 변수의 타입을 각각 적으시오.

1. 참조형
2. 기본형

《 Chap.26 : 변수의 초기화 ~ Chap.31 : 메서드 & 오버로딩 》

Q1 . static 메서드가 인스턴스 멤버를 사용할 수 없는 이유

​ static메서드는 클래스 멤버에만 접근할 수 있으며, 인스턴스 멤버(변수/메서드)를 사용할 수 없다...(그것이 정의니까...)

Q2. static을 붙이는 것을 고려해야하는 때를 서술

​ 메서드를 구성할 때 해당 메서드에서 인스턴스 멤버를 사용하지 않는다면 static을 붙이는 것을 고려해야 한다.

Q3 . 오버로딩(overloading)의 조건 중 알맞은 것을 고르시오.

② 매개변수의 갯수 혹은 타입이 달라야한다.


《 Chap.32 : 생성자 ~ Chap.37 : 객체 자신을 가리키는 참조변수 - this 》

Q1 . 생성자는 인스턴스를 생성한다.

​ ( O )

Q2 . 생성자의 조건 중 알맞은 않은 것을 고르시오.

② 생성자는 리턴 값이 없다.


《 Chap.38 : 변수의 초기화 ~ Chap.41 : 멤버변수의 초기화 시기와 순서 》

Q1 . 초기화 블럭이 실행되는 시점과 사용하는 이유는 무엇인가?

​ 초기화 블럭은 인스턴스 초기화블럭과 클래스 초기화 블럭이 있다. 인스턴스 초기화 블럭은 인스턴스가 초기화될 때마다 한번씩, 클래스 초기화 블럭은 클래스가 로딩될 때 최초 1번만 수행된다. 클래스 초기화 블럭은 클래스 변수의 복잡한 초기화를 위해, 인스턴스 초기화 블럭은 각 생성자에서 수행되는 공통적인 작업을 묶어서 수행하기 위해 실행된다.

Q2 . 클래스변수와 인스턴스 변수의 초기화 시기의 순서에는 어떤 차이가 있는가?

​ 클래스 변수는 클래스가 로딩되면서 최초 한 번만 수행되고, 인스턴스 변수는 인스턴스의 초기화가 이루어질 때마다 수행된다.

Q3 . 다음 중 맞는 것을 모두 고르고, 틀린 건 고쳐주세요.

1. 모든 변수는 초기화 하지 않아도 생성자가 자동으로 초기화 해준다.
- 클래스 형태가 아닌 지역변수는 자동으로 초기화되지 않는다.

2. 클래스 초기화 블럭은 인스턴스 생성될 때마다 자동으로 실행된다.
- 클래스 초기화 블럭은 클래스가 로딩될 때 한 번 실행된다.

3. 인스턴스의 자동 초기화는 가장 먼저 수행된다
- 맞음

4. boolean의 기본값은 True다
- false이다.

Q4 . 변수 초기화 빠른 순으로 나열하시오

a. static int a;

b. int b;

c. static { int c = 0; }

d. { int d = 0; }

e. int e;

f. static int f;

​ c / a=f / d / b=e ???

​ ... 초기화 하는 코드가 c와 d밖에 없는데 이중에서 c가 먼저 실행되긴 한다...

01stone commented 2 years ago

Chap1~

  1. 클래스 : 객체를 정의해 놓은 것 객체 : 실제로 존재하는 것 인스턴스 : 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 함

  1. 2, 4

Chap7~

  1. b
  2. cv, iv 공통점 : 클래스 영역에 선언됨 차이점 : cv에만 static, iv는 별도의 저장공간을 가짐,

Chap13~

  1. 중복 줄일 수 있다 관리가 쉽다 재사용 할 수 있다 간결해 이해하기 쉽다

  1. ㄷ ㄱ ㄴ

Chap19~

  1. 반환타입이 void인 경우
  2. 참조형, 기본형

Chap26~

  1. static메서드는 객체생성 없으므로 객체없이 인스턴스멤버 못함
  2. 클래스의 멤버변수 중 모든 인스턴스에 공통된 값이 있으면 static
  3. 2

Chap32~

  1. x
  2. 4

Chap38~

  1. 초기화 블럭이 실행되는 시점? 사용되는 이유? cv 초기화 시점 : 메모리에 올라갈 때, 클래스가 처음 로딩될떄 iv 초기화 시점 : 인스턴스가 생성될 때 마다 멤버변수의 초기화는 선택이지만 지역변수(수동)는 메모리 재사용이 빈번하기 때문에
  1. 클래스변수와 인스턴스변수의 초기화 시기에 순서에는 어떤 차이가 있는가? 클래스변수 다음에 인스턴스변수

  2. x 1. 지역변수는 수동 x 2. 인스턴스 초기화 블럭이 인스턴스 생성될 때마다.. x 3. cv먼저 수행됨 O 4.

  3. ???? a,f - b,e - c-d

kcho32 commented 2 years ago

Chap 1 ~ 6

  1. 클래스, 객체, 인스턴스에 대해 서술하시오
    1. 클래스: 우리가 원하는 물건, 개념(현실의 객체)을 추상화를 통해 공통된 기능과 속성을 추려서 하나의 틀로 만들어 해당 기능과 속성을 정의해 놓은 것
    2. 객체: 현실에서 쓰이는 모든 것으로 다른 것과 구분을 지을 수 있는 개념과 물건을 모두 포함한다.
    3. 인스턴스: 객체와 같은 의미지만, 객체는 포괄적인 의미로 사용되고 인스턴스는 클래스에서 발생한 객체로 해당 클래스에 관련되 있다는 것을 강조하는 의미로 쓰인다.
  2. 소스파일과 소스파일내의 클래스의 관계에 대해 설명하시오. 4번

Chap7 ~ 12

  1. 인스턴스 변수와 클래스 변수의 공통점(1개)와 차이점(2개 또는 3개)를 말하시오. 공통점: 클래스 내부에서 선언 차이점: 클래스 변수는 인스턴스 생성 없이 사용 가능(매개변수), 인스턴스 변수는 인스턴스 생성 필수 클래스 메서드에서는 클래스 변수만 사용 가능, 인스턴스 메서드에서는 클래스와 인스턴스 변수 모두 사용 가능

  2. 클래스의 정의가 아닌 것은? b: 다른 종류의 데이터화 함수 사용 가능

Chap 13 ~ 18

  1. 메서드란 객체지향개념에서 함수를 의미하며, 특정 작업을 수행하는 단위로 문장들을 하나로 묶은 것을 의미한다. 또한, 클래스 안에 반드시 있어야 한다. 메서드의 장점 4개는? 재사용, 과정을 몰라도 됨, 하나의 기능만 담당하기 때문에 수정이 쉽다,

  2. 다음은 메서드를 실행하는 코드이다. 메서드 실행 흐름을 순서대로 나열하시오. ㄷ->ㄱ->ㄴ

Chap 19 ~ 25

  1. 반환값의 유무에 관계없이 모든 메서드는 하나의 return문이 있어야 하는데, return문을 안써도 되는 경우는 어떤 경우인가? void 타입의 메서드일 때
  2. 매개변수의 타입이 < >일 때는 read & write이고 , 매개변수의 타입이 < >일 때는 read only이다. <>안에 들어갈 변수의 타입을 각각 적으시오. 참조형 변수, 기본형 변수

Chap 26 ~ 31

  1. static 메서드가 인스턴스 멤버를 사용할 수 없는 이유 static 메서드는 인스턴스가 만들어지기 전에 로딩되기 때문에 사용하려는 멤버가 인스턴스가 만들어지기 전일 수 있기때문에 사용 불가하다

  2. static을 붙이는 것을 고려해야하는 때를 서술 클래스의 모든 인스턴스가 공통으로 사용할 때 인스턴스 생성하지 않고 사용할 때 메서드에서 인스턴스 변수를 사용하지 않을 때

  3. 오버로딩(overloading)의 조건 중 알맞은 것을 고르시오.

    1. 매개변수의 갯수 혹은 타입이 달라야한다.

Chap 32 ~37 Q1 . 생성자는 인스턴스를 생성한다. ( O / X ) X Q2 . 생성자의 조건 중 알맞은 않은 것을 고르시오.

  1. 생성자가 메서드이고 리턴값이 없다면 "void"를 붙여야 한다.

Chap 38~ 41 Q1 . 초기화 블럭이 실행되는 시점과 사용하는 이유는 무엇인가? 초기화 블럭은 다른 모든 초기화 과정이 끝난 후에 실행된다. 초기화가 복잡할 때 사용 Q2 . 클래스변수와 인스턴스 변수의 초기화 시기의 순서에는 어떤 차이가 있는가? 클래스 변수는 메모리에 로딩될 때 한번 실행, 인스턴스 변수의 초기화는 인스턴스 생성시마다 실행 Q3 . 다음 중 맞는 것을 모두 고르고, 틀린 건 고쳐주세요. 답 없음

  1. 모든 변수 X -> 지역 변수는 초기화 필수
  2. 클래스 초기화 블럭은 메모리 로딩시 한번, 인스턴스 초기화 블럭만 인스턴스 생성될 때 마다
  3. 클래스의 자동 초기화가 가장 먼저 수행
  4. boolean의 기본값 False Q4 . 변수 초기화 빠른 순으로 나열하시오 f → a → c → e → b → d
chaesuhyeon commented 2 years ago

《 Chap.1 : 객체지향 언어 ~ Chap.6 : 객체의 생성과 사용 》

  1. 클래스 : 객체를 정의해 놓은 것 객체 : 실제로 존재하는 것 인스턴스 : 클래스로부터 만들어진 객체
  2. 3, 4, 5

《 Chap.7 : 객체의 생성과 사용 예제 ~ Chap.12 : 클래스 변수와 인스턴스 변수 》

  1. 공통점 : 클래스 영역에서 선언됨 차이점 : 인스턴스 변수는 인스턴스를 생성해야만 사용할 수 있지만, static변수는 인스턴스를 생성하지 않아도 사용가능하다 인스턴스마다 별도의 저장공간을 가지므로 서로 다른 값을 가질 수 있지만, static변수는 모든 인스턴스가 공통된 저장공간을 공유한다.

  2. d

《 Chap.13, Chap.14 : 메서드란? ~ Chap.18 : 메서드의 실행 흐름 》

  1. 코드의 중복을 제거하여 오동작을 방지할 수 있다, 코드의 관리가 용이하다, 코드의 재사용성 , 코드의 간결함
  2. ㄷ,ㄱ,ㄴ

《 Chap.19 : 메서드의 실행 흐름 예제 ~ Chap.25 : 참조형 반환 타입 》

  1. 반환 타입이 void일 때
  2. 참조형 매개변수, 기본형 매개변수

《 Chap.26 : 변수의 초기화 ~ Chap.31 : 메서드 & 오버로딩 》

  1. static메서드는 인스턴스 생성 없이 사용할 수 있는데, 인스턴스 멤버가 있다면 인스턴스를 생성해야하므로 맞지않음. 또한 static메서드가 호출 되었을 때 인스턴스가 존재하지 않을 수도 있음
  2. 메서드 내에서 인스턴스 변수를 사용하지 않는다면 static붙이는 것을 고려해야함
  3. 2

《 Chap.32 : 생성자 ~ Chap.37 : 객체 자신을 가리키는 참조변수 - this 》

  1. x
  2. 4

《 Chap.38 : 변수의 초기화 ~ Chap.41 : 멤버변수의 초기화 시기와 순서 》

  1. 변수의 복잡한 초기화를 위해 사용됨 / 클래스 초기화 블럭은 처음 메모리에 로딩될 때 한번만 수행됨. 인스턴스 초기화 블럭은 인스턴스가 생성 될 때 수행됨
  2. 클래스 변수는 처음 메모리에 로딩될때 한번만 수행되며 제일 먼저 초기화가 되고 인스턴스 변수는 인스턴스가 생성될때 마다 초기화 됨
  3. 맞는 것 : x없음
    1. 모든 변수 x --> 지역변수를 제외한 멤버변수에만 해당
    2. 클래스 초기화 블럭 --> 인스턴스 초기화 블럭은 인스턴스 생성될 때마다 자동으로 실행된다.
    3. 인스턴스 --> 클래스 초기화
    4. boolean의 기본값은 'false' 다
  4. c > a=b=e=f > d
hanbikimm commented 2 years ago

ch. 1-6 1. 클래스: 객체에 대한 속성과 기능을 구현한, 객체 틀 객체: 실제로 존재하는 것. 모든 인스턴스를 태표하는 포괄적 의미 인스턴스: 어떤 클래스로부터 만들어진 그 클래스의 객체 2. 3번(public class는 1개만 있어야 함), 4번(파일명과 public class명은 동일해야 함), 5번(대소문자 구분해야 함) 소스파일 안에는 보통 클래스 하나만 생성하지만 여러 개 생성할 수 있긴 하다. Public class명은 파일명과 동일해야 하며, 하나만 존재해야 한다. Public class 없이 일반 class만 있다면, 파일명은 일반 class명 중 아무거나 사용해도 상관없다. class명은 대소문자를 구분한다.

ch.7-12 1. b 같은 종류의 여러 데이터의 집합 저장 공간은 ‘배열’ 클래스는 '구조체(서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합 저장 공간)'와 함수의 결합 형태를 의미함 2. 스크린샷 2022-01-21 21 21 03

ch. 13-18 1. 코드 간결, 재사용, 중복 제거, 관리 용이 2. ㄷ - ㄱ - ㄴ

ch. 19-25 1. Void (컴파일러가 자동으로 'return;' 을 생성) 2. 참조형, 기본형

ch.26-31 1. Static 메서드는 인스턴스 변수나 메서드를 사용하지 않는 메서드이다. 또한 static은 항상 존재하지만 인스턴스 변수는 인스턴스가 생성되어야 존재하기 때문에 static 메서드를 실행할 때 instance 멤버는 없을 수 있다. 2. 클래스의 멤버 중 모든 인스턴스에 공통값을 유지해야 할 때 메서드 중 인스턴스 변수나 메서드를 사용하지 않을 때 3. 2번

ch. 32-37 1. X 2. ④

ch. 38-41 1. 클래스 초기화 블럭은 처음 메모리에 로딩될 때 한 번 실행, 인스턴스 초기화 블럭은 인스턴스가 생성될 때마다 실행 명시적 초기화 보다 복잡한 초기화 작업이 필요할 때 사용 2. 메모리 로딩시 클래스 초기화 - 메인 메서드 실행 - 인스턴스 생성되며 인스턴스 초기화 3. 정답 없음 1. 지역 변수는 자동 초기화되지 않음 2. 클래스 초기화 블럭은 메모리 로딩시 한 번만 실행됨 3. 클래스의 자동 초기화가 가장 먼저 수행됨 4. boolean의 기본값은 false 4. a, f - b,e - c - d

lemon0913 commented 2 years ago
<13-18> Q1. 재사용 가능, 중복제거, 관리 편리함 Q2. ㄷ -> ㄱ -> ㄴ <32-37> Q1. X Q2. 4 <38-41> Q1. Q2. Q3. 3, 4 1)X -> 멤버변수는 자동 초기화되나 지역 변수는 자동초기화 되지 않는다. 2)X -> 클래스 초기화 블럭은 클래스가 메모리에 올라갈 때만 초기화 될 듯? 3)O 4)O Q4. <19-25> Q1. 반환타입이 void인 경우 Q2. 참조형, 기본형 <1-6> Q1. 클래스 : 객체를 정의해놓은 것. 변수와 메서드로 구성됨 객체 : 클래스에 정의된 대로 메모리에 생성된 것. 인스턴스 : 어떤 클래스로부터 만들어진 객체 객체는 모든 인스턴스를 대표하는 포괄적인 의미이고 인스턴스는 어떤 클래스로부터 만들어졌다는 의미를 강조할 때 사용 Q2. 3, 4, 5 <26-31> Q1. 클래스 메서드(=static 메서드) 사용 시점에 인스턴스가 선언되지 않았을 수 있다. 따라서 인스턴스 멤버 호출이 불가능할 수 있다 Q2. 변수 -> 모든 인스턴스에서 공통된 값을 가지는 변수인 경우 메서드 -> 인스턴스 멤버를 사용하지 않는 메서드인 경우 Q3. 2 <7-12> Q1. 공통점 : 클래스 영역에 선언, 차이점 : 클래스변수는 앞에 static이 붙음, 클래스변수는 인스턴스가 선언되지 않아도 사용가능하다 Q2. (b) 다른 종류의 데이터여도 괜찮음
yummygyudon commented 2 years ago

Chap13~18 A1. 재사용 / 유지보수 / 관리 용이(관계) / 신뢰성이 높음(중복 제거)

A2. ㄷ-ㄱ-ㄴ ============== Chap32~37 A1. X

A2. 4 ============== Chap38~41 A1. 지역변수만큼은 자동적으로 초기화가 안되므로 초기화 작업이 필수이고 초기화블럭은 복잡한 초기화를 할 때 사용된다. 자동초기화와 명시적초기화 이후 마지막으로 실행된다.

A2. 클래스 변수초기화 "이후" 인스턴스 변수 초기화가 이루어진다.

A3. 맞는 것 2 틀린것 1.지역 변수는 초기화를 직접 해주어야 한다.

  1. 인스턴스보다 클래스가 먼저 수행된다.
  2. boolean의 기본값은 falseㅇ다.

A4. a-f-c-b-e-c-d ============== Chap19~25 A1. 반환타입이 void인 경우

A2. 참조형, 기본형

============== Chap1~6 A1. " 클래스(Class)로부터 객체를 만드는 과정 "을 이르는 말인데 이 과정을 거쳐 만들어진 객체를 인스턴스 (instance)라고 한다. A2. 3, 4

============== Chap26~31 A1. static메서드는 인스턴스를 생성하지 않고도 호출 가능하기때문에 인스턴스 멤버는 인스턴스를 생성해야만 호출할 수 있는데

A2. 모든 인스턴스에 공통으로 사용하는 멤버에 붙이는 것이 좋다

A3. 2 ============== Chap7~12 A1. 공통점 : 선언위치(클래스 영역) 차이점 : 생성시기(인스턴스 : 인스턴스 생성될때마다 / 클래스 : 인스턴스 없이도 바로 사용) ?....

A2. c

kcho32 commented 2 years ago

마지막 문제 오류 변수 초기화 되는 순으로 나열

class Test {
    static int a = 0;
    int b = 0;
    int e;
    static int f;
    static { 
        int c = 0; 
    }
    { int d = 0; }
}

답: f → a → c → e → b → d

조심하겠습니다