안녕하세요. pitang입니다.
7장 8문제를 풀어보겠습니다.
1번
자바의 상속에 대한 설명 중 틀린 것은 무엇입니까?
1. 자바는 다중 상속을 허용한다.
2. 부모의 메서드를 자식 클래스에서 재정의(오버 라이딩)할 수 있다.
3. 부모의 private 접근 제한을 갖는 필드와 메소드는 상속의 대상이 아니다.
4. final 클래스는 상속할 수 없고, final 메소드는 오버 라이딩할 수 없다.
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
1번
다른 언어와는 달리 자바는 다중 상속을 허용하지 않는다.
2번
클래스 타입 변환에 대한 설명 중 틀린 것은 무엇입니까?
1. 자식 객체는 부모 타입으로 자동 타입 변환된다.
2. 부모 객체는 항상 자식 타입으로 강제 타입 변환된다.
3. 자동 타입 변환을 이용해서 필드와 매개 변수의 다형성을 구현한다.
4. 강제 타입 변환 전에 instanceof 연산자로 변환 가능한지 검사하는 것이 좋다.
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
2번
강제 타입 변환은 자식 객체만 가능하고, 항상이 아닌 변환될 수도 있는 것이다.
3번
final 키워드에 대한 설명으로 틀린 것은?
1. final 클래스는 부모 클래스로 사용할 수 있다.
2. final 필드는 값이 저장된 후에는 변경할 수 없다.
3. final 메소드는 재정의(오버 라이딩)할 수 없다.
4. static final 필드는 상수를 말한다.
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
1번
클래스를 선언할 때 final 키워드를 붙이면 최종적인 클래스이므로 상속할 수 없다.
4번
오버라이딩(Overriding)에 대한 설명으로 틀린 것은?
1. 부모 메서드의 시그너처(리턴 타입, 메서드명, 매개 변수)와 동일해야 한다.
2. 부모 메서드보다 좁은 접근 제한자를 붙일 수 없다. ex) public(부모) -> private(자식)
3. @Override 어노테이션을 사용하면 재정의가 확실한지 컴파일러가 검증한다.
4. protected 접근 제한을 갖는 메소드는 다른 패키지의 자식 클래스에서 재정의할 수 없다.
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
4번
protected 접근 제한을 갖는 메서드는 같은 패키지 또는 다른 패키지 내의 상속받은 자식 클래스에서 사용 가능하다.
메서드를 오버 라이딩할 때는
부모의 메서드와 동일한 시그너처를 가져야 하고 접근 제한을 더 강하게 오버 라이딩할 수 없다.
접근 제한을 더 강하게 오버라이딩할 수 없다는 것은
부모 메서드가 public이라면, 자식 메서드는 default나 private 접근 제한으로 수정할 수 업다는 것이다.
하지만 반대는 가능하다.
5번
Parent 클래스를 상속해서 Child 클래스를 다음과 같이 작성했는데, Child 클래스의 생성자에서 컴파일 에러가 발생했습니다.
그 이유를 설명해보세요.
public class Parent { public String name; public Parent(String name) { this.name = name; } }
public class Child extends Parent { private int studentNo; public Child(String name, int studentNo) { this.name = name; this.studentNo = studentNo; } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
super(); 를 쓰면 컴파일 에러는 없어질 것이다.
자식 클래스에서 부모 클래스를 호출하지 않았기 때문에 컴파일 에러가 발생했다.
6번
Parent 클래스를 상속받아 Child 클래스를 다음과 같이 작성했습니다.
ChildExample 클래스를 실행했을 때 호출되는 각 클래스의 생성자의 순서를 생각하면서 출력 결과를 작성해보세요.
public class Parent { public String nation; public Parent() { this("대한민국"); System.out.println("Parent() call"); } public Parent(String nation) { this.nation = nation; System.out.println("Parent(String nation) call"); } }
-> Parent
public class Child extends Parent { private String name; public Child() { this("홍길동"); System.out.println("Child() call"); } public Child(String name) { this.name = name; System.out.println("Child(String name) call"); } }
-> Child
public class ChildExample { public static void main(String[] args) { Child child = new Child(); } }
-> ChildExample
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
<console>
Parent(String nation) call
Parent() call
Child(String name) call
Child() call
public class Parent { public String nation; public Parent() { this("대한민국"); //(2) Parent(String nation)으로 System.out.println("Parent() call"); //(4)다시 돌아와 출력 } public Parent(String nation) { this.nation = nation; System.out.println("Parent(String nation) call"); //(3) 출력 } }
public class Child extends Parent { private String name; public Child() { //(1) 자동으로 생성되는 기본 부모 생성자를 호출 this("홍길동"); //(5) Child(String name)으로 이동 System.out.println("Child() call"); //(7)다시 돌아와 출력 } public Child(String name) { this.name = name; System.out.println("Child(String name) call"); //(6)출력 } }
7번
Tire 클래스를 상속받아 SnowTire 클래스를 다음과 같이 작성했습니다.
SnowTireExample 클래스를 실행했을 때 출력 결과는 무엇일까요?
pulic class Tire { public void run() { System.out.println("일반 타이어가 굴러갑니다."); } }
public class SnowTire extends Tire { @Override public void run() { System.out.println("스노우 타이어가 굴러갑니다."); } }
public class SnowTireExample { public static void main(String[] args) { SnowTire snowTire = new SnowTire(); Tire tire = snowTire; snowTire.run(); tire.run(); } }
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
<console>
스노우 타이어가 굴러갑니다.
스노우 타이어가 굴러갑니다.
snowTire.run(); 에서 당연히 스노우 타이어가 굴러갑니다. 가 출력이 되고
tire.run(); 에서는 SnowTire에서 재정의된 run() 메서드를 출력하므로 스노우 타이어가 굴러갑니다. 가 출력된다.
8번
A, B, C, D, E, F 클래스가 다음과 같이 상속 관계에 있을 때 다음 빈칸에 들어올 수 없는 코드는?
B b = 빈칸;
메서드 선언 : void method(B b) {...}
메서드 호출 : method(빈칸)
1. new B()
2. (B) new A() //강제 타입 변환
3. new D() //자동 타입 변환
4. new E() //자동 타입 변환
⬇️⬇️⬇️ 정답은 더보기를 눌러주세요 ⬇️⬇️⬇️
2번
부모 클래스가 자식 클래스로 강제 타입 변환은 불가능하다.
감사합니다.
*m1 맥북을 사용 중입니다.*
'알고리즘 > 기타퀴즈' 카테고리의 다른 글
이것이 자바다 8장 인터페이스 Quiz (0) | 2021.09.28 |
---|---|
이것이 자바다 6장 클래스 Quiz (0) | 2021.09.21 |
이것이 자바다 5장 참조 타입 Quiz (0) | 2021.09.12 |
이것이 자바다 4장 조건문과 반복문 Quiz (0) | 2021.09.09 |
이것이 자바다 3장 연산자 Quiz (0) | 2021.09.09 |