[자바의 신] 정리해 봅시다 (Ch 10~18)

Eunbi Lee·2023년 4월 7일
1

Java

목록 보기
2/5
post-thumbnail

자바의 신

자바의 신 - 정리해 봅시다의 각 챕터별 정답

자바의 신 18장은 별도로 정리해 봅시다 파트가 수록되어 있지 않습니다.

10장 자바의 상속이라는 것이 있어요

1. 상속을 받는 클래스의 선언문에 사용하는 무엇인가요?

  • extends

2. 상속을 받은 클래스의 생성자를 수행하면 부모의 생성자도 자동으로 수행되나요?

  • O

3. 부모 클래스의 생성자를 자식 클래스에서 직접 선택하려고 할 때 사용하는 예약어는 무엇인가요?

  • super

4. 메소드 Overriding과 Overloading을 정확하게 설명해 보세요.

  • (p 252) 간단하게 메소드 오버라이딩(메소드 Overriding)은 "복제", 메소드 오버로딩(Overloading)은 "확장"이라고 생각할 수 있다.
  • 메소드 오버라이딩 : 부모 클래스의 메소드 시그니처(동일하게 선언됨)를 복제해서 자식 클래스에서 새로운 것을 만들어 내어 부모 클래스의 기능은 무시하고, 자식 클래스에서 덮어쓰는 개념
  • 메소드 오버로딩 : 메소드의 매개 변수들을 확장하는 개념

5. A가 부모, B가 자식 클래스라면 A a = new B(); 형태로 객체 생성이 가능한가요?

  • O, 이를 참조 자료형의 형변환이라고 한다.
  • 참조 자료형의 형변환 : 자식 클래스의 타입을 부모 클래스의 타입으로 명시적으로 형변환하는 것
A a = new B(); // A a = B; 도 가능

6. 명시적으로 형 변환을 하기 전에 타입을 확인하려면 어떤 예약어를 사용해야 하나요?

  • instanceof

7. 6에서 사용한 예약어의 좌측에는 어떤 값이, 우측에는 어떤 값이 들어가나요?

  • 객체, 클래스 타입
for(ParentCasting instanceof:ChildCasting) { // 타입 이름, 임시 변수, 반복대상 객체
	if(temParent instanceof ChildCasting) { // 객체, instanceof, 클래스 타입
...
	}
}

8. 6의 예약어의 수행 결과는 어떤 타입으로 제공되나요?

  • (p 258) boolean

9. Polymorphism이라는 것은 도대체 뭔가요?

  • (p 261) 다형성이다.
  • 다형성 : 형 변환을 하더라도 실제 호출되는 것은 원래 객체에 있는 메소드가 호출된다는 것

11장 매번 만들기 귀찮은데 누가 만들어 놓은 거 쓸 수 없나요?

1. API 문서를 자동으로 생성하는 명령어를 무엇이라고 했나요?

  • javadoc

2. API의 왼쪽 상단에는 어떤 내용이 제공되나요?

  • 패키지 목록 설명

3. API 왼쪽 하단에는 어떤 내용이 제공되나요?

  • 클래스 목록 설명

4. API 우측 화면에는 보통 어떤 내용이 제공되나요?

  • 상세 설명 창

5. Deprecated라는 것의 의미는 무엇인가요?

  • "더이상 사용하지 않는다."

12장 모든 클래스의 부모 클래스는 Obejct에요

1. 모든 클래스의 최상위 부모 클래스인 Object 클래스는 어떤 패키지에 선언되어 있나요?

  • (p 292) java.lang

2. 클래스가 어떻게 선언되어 있는지 확인할 수 있는 명령어(실행 파일)의 이름은 무엇인가요?

  • javap

3. Obejct 클래스에 선언되어 있는 모든 메소드는 여러분들이 Overriding해야 하나요?

  • X, 필요할 때만 Overriding하면 된다.

4. object 클래스의 clone() 메소드의 용도는 무엇인가요?

  • (p 293) 객체의 복사본을 만들어 리턴할 때 사용한다.

5. System.out.println() 메소드를 사용하여 클래스를 출력했을 때 호출되는 Object 클래스에 있는 메소드는 무엇인가요?

  • toString()

6. 객체의 주소를 비교하는 것이 아닌, 값을 비교하려면 Obejct 클래스에 선언되어 있는 어떤 메소드를 Overriding해야 하나요?

  • (p 300) equals()

7. Obejct 클래스에 선언되어 있는 hashCode()라는 메소드는 어떤 타입의 값을 리턴하나요?

  • (p 305) int

13장 인터페이스와 추상클래스, enum

1. 인터페이스에 선언되어 있는 메소드는 body(몸통)가 있어도 되나요?

  • X

2.인터페이스를 구현하는 클래스의 선언시 사용하는 예약어는 무엇인가요?

  • implements

3. 일부만 완성되어 있는 클래스를 무엇이라고 하나요?

  • abstract 클래스(추상 클래스)

4. 3번의 답에 있는 클래스에 body(몸통)가 없는 메소드를 추가하려면 어떤 예약어를 추가해야 하나요?

  • (p 318) abstract

5. 클래스를 final로 선언하면 어떤 제약이 발생하나요?

  • (p 321) 상속을 할 수 없다.

6. 메소드를 final로 선언하면 어떤 제약이 발생하나요?

  • (p 322) Overriding을 할 수 없다.

7. 변수를 final로 선언하면 어떤 제약이 발생하나요?

  • (p 323) 값을 변경할 수 없다. 또한 선언과 동시에 값을 지정, 즉 초기화를 해야한다.

8. enum 클래스 안에 정의하는 여러 개의 상수들을 나열하기 위해서 상수 사이에 사용하는 기호는 무엇인가요?

  • (p 329) .

9. enum으로 선언한 클래스는 어떤 클래스의 상속을 자동으로 받게 되나요?

  • (p 332) Enum

10. enum 클래스에 선언되어 있지는 않지만 컴파일시 자동으로 추가되는 상수의 목록을 배열로 리턴하는 메소드는 무엇인가요?

  • (p 334~335) values()

14장 다 배운 것 같지만, 예외라는 중요한 것이 있어요

1. 예외를 처리하기 위한 세 가지 블록에는 어떤 것이 있나요?

  • try-catch, finally, throws

2. 1의 답 중에서 "여기에서 예외가 발생할 것이니 조심하세요" 라고 선언하는 블록은 어떤 블록인가요?

  • try

3. 1의 답 중에서 "예외가 발생하든 안하든 얘는 반드시 실행되어야 합니다." 라는 블록은 어떤 블록인가요?

  • finally

4. 예외의 종류 세 가지는 각각 무엇인가요?

  • checked exception, error, unchecked exception

5. 프로세스에 치명적인 영향을 주는 문제가 발생한 것을 무엇이라고 하나요?

  • error(이하 에러)

6. try나 catch 블록 내에서 예외를 발생시키는 키워드는 무엇인가요?

  • (p 361) thorws

7. 메소드 선언 시 어떤 예외를 던질 수도 있다고 선언할 때 사용하는 키워드는 무엇인가요?

  • throws

8. 직접 예외를 만들 때 어떤 클래스의 상속을 받아서 만들어야만 하나요?

  • (p 364) Exception

15장 String

1. String 클래스는 fianl 클래스인가요?

  • (p 375) O, 더이상 클래스를 확장할 수 없게 하기 위해서

2. String 클래스가 구현한 인터페이스에는 어떤 것들이 있나요?

  • (p 375) Serializable, Comparable, CharSequence

3. String 클래스의 생성자 중에서 가장 의미없는 (사용할 필요가 없는) 생성자는 무엇인가요?

  • 기본 생성자

4. String 문자열을 byte 배열로 만드는 메소드의 이름은 무엇인가요?

  • (p 377) getBytes()

5. String 문자열의 메소드를 호출하기 전에 반드시 점검해야 하는 사항은 무엇인가요?

  • 객체가 null 값인지

6. String 문자열의 길이를 알아내는 메소드는 무엇인가요?

  • length()

7. String 클래스의 equals() 메소드와 compareTo() 메소드의 공통점과 차이점은 무엇인가요?
(p 386~388)
공통점 : 매개변수로 넘어온 값과 String 객체가 같은지를 비교, 즉 동등성을 확인
차이점 : equals()는 boolean 값을 반환하는 반면, compareTo()는 매개변수로 넘어온 String 객체가 알파벳 순으로 앞에 있는 양수, 뒤에 있으면 음수를 반환한다. 즉, int 값을 반환한다.

8. 문자열이 "서울시"로 시작하는지를 확인하려면 String의 어떤 메소드를 사용해야 하나요?

  • (p 389) startWith()

9. 문자열에 "한국"이라는 단어의 위치를 찾아내려고 할 때에는 String의 어떤 메소드를 사용해야 하나요?

  • (p 394) indexOf()

10. 9번 문제의 답에서 "한국"이 문자열에 없을 때 결과 값은 무엇인가요?

  • -1

11. 문자열의 1번째부터 10번째 위치까지의 내용을 String으로 추출하려고 합니다. 어떤 메소드를 사용해야 하나요?

  • (p 398) substring()

12. 문자열의 모든 공백을 * 표시로 변환하려고 합니다. 어떤 메소드를 사용하는 것이 좋을까요?

  • (p 403) replaceAll()

13. String의 단점을 보완하기 위한 두 개의 클래스는 무엇인가요?

  • StringBuffer, StringBuilder

14. 13번의 답에서 문자열을 더하기 위한 메소드의 이름은 무엇인가요?

  • append()

16장 클래스 안에 클래스가 들어갈 수도 있구나

1. Nested 클래스에 속하는 3가지 클래스에는 어떤 것들이 있나요?

  • (p 416)
  • Static Nested 클래스
  • local Inner 클래스
  • Anonymous Inner 클래스

2. Nested 클래스를 컴파일하면 Nested 클래스 파일의 이름은 어떻게 되나요?

  • (p 418) 앞에 $가 붙는다.
$클래스명.class

3. StaticNested 클래스는 다른 Nested 클래스와 어떤 차이가 있나요?

  • (p 420)
  • 외부적 이유 : static 유무
  • 내부적 이유 : 인스턴스 없이 내부 클래스의 인스턴스를 바로 생성할 수 있다.

4. StaticNested 클래스의 객체 생성은 어떻게 하나요?

  • (p 418) 예
OuterClass outer=new OuterClass();

5. 일반적인 내부 클래스의 객체 생성은 어떻게 하나요?

  • (p 420) 예
OuterClass.NestedClass nested=outer.new NestedClass();

6. Nested 클래스를 만드는 이유는 무엇인가요?

  • (p 417) 코드를 간편하게 표현하기 위해서
    - StaticNested 클래스의 경우 : 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할 필요가 있기 때문
    - Inner 클래스의 경우 : 캡슐화와 소스의 가독성 및 유지보수성을 높이고 싶기 때문

7. Nested 클래스에서 감싸고 있는 클래스의 private로 선언된 변수에 접근할 수 있나요?

  • O

8. 감싸고 있는 클래스에서 Nested 클래스에 선언된 private로 선언된 변수에 접근할 수 있나요?

  • O

17장 어노테이션이라는 것도 알아야 한다

1. @Override 어노테이션의 용도는 무엇인가요?

  • (p 434) 어떤 메소드가 부모 클래스에 있는 메소드를 오버라이딩(Overriding) 했다는 것을 명시적으로 선언하기 위해 사용한다.

2. @SupressWarnings 어노테이션의 용도는 무엇인가요?

  • (p 436) 컴파일 시 나타나는 경고 메시지를 생략하도록 하기 위해 사용한다.

3. @Deprecated 어노테이션의 용도는 무엇인가요?

  • (p 436) 메소드나 클래스가 더이상 사용되지 않음을 컴파일러에게 알리기 위해서 사용한다.

4. 어노테이션을 선언할 때 사용하는 어노테이션을 무엇이라고 부르나요?

  • (p 437) 메타 어노테이션

5. 4번의 답에 있는 어노테이션들을 사용할 때 import 해야 하는 패키지는 무엇인가요?

  • java.lang.Annotation

6. @Targe 어노테이션의 용도는 무엇인가요?

  • (p 437) 어노테이션을 어떤 것에 적용할지 선언할 때 사용한다.

7. @Retention 어노테이션의 용도는 무엇인가요?

  • (p 438) 얼마나 오래 어노테이션 정보가 유지되는지를 선언할 때 사용한다.

8. @Inherited 어노테이션의 용도는 무엇인가요?

  • (p 438) 모든 자식 클래스에서 부모 클래스의 어노테이션을 사용할 수 있다는 것을 선언할 때 사용한다.

9. 어노테이션을 선언할 때에는 class 대신 어떤 예약어를 사용해야 하나요?

  • @interface
public @interface MyAnnotation {
   String value();
}

후기

본격적으로 13장부터 어렵다고 느껴지기 시작했다.
생소한 enum 개념부터 시작해서 코드와 병행하며 공부하지 않으면, 제대로 이해하지 못하겠다는 생각이 들었다. 😅
챕터별 중간 점검 파트인 정리해 봅시다에서도 13장부터 점점 틀리기 시작한 것 같다.
그래도 반복해서 정독하며 개념을 잘 정립해보자!


참고 사이트 : https://updown90.tistory.com/78

공식 사이트에서 답안을 적을 때에는, 특정 키워드를 포함해야만 답으로 인정이 됩니다.

따라서 특정 키워드를 확인하기 위해서는 위 사이트를 참고하면 좋을 것 같네요. 👍

profile
B - B = 이은비

0개의 댓글