7-2 타입변환과 다형성 마무리 문제
1. 클래스 타입 변환에 대한 설명입니다. 맞는것에 O표 틀린것에 X표 하세요.
① 자식 객체는 부모 타입으로 자동 타입 변환된다. ( O )
② 부모 객체는 항상 자식 타입으로 강제 타입 변환된다. ( X )
③ 자동 타입 변환을 이용해서 필드와 매개변수의 다형성을 구현한다. ( O )
④ 강제 타입 변환 전에 instanceof 연산자로 변환 가능한지 검사하는 것이 좋다. ( O )
2. Tire 클래스를 상속받아 SnowTire 클래스를 다음과 같이 작성했습니다.
SnowTireExamle 클래스를 실행했을때 출력 결과는 무엇일까요?
SnowTire 객체 (자식)을 생성했고,
Tire 타입의 tire 부모 변수에 이 SnowTire객체를 대입했다.
그리고 snowTire변수가 참조하는 객체인 SnowTire객체의 메소드 run() 실행
그리고 tire 변수에 snowTire변수를 대입함으로써 이 tire변수가 참조하는 객체인 SnowTire객체의 메소드 run() 실행
3. A, B, C, D, E, F 클래스가 다음과 같이 상속 관계에 있을때 다음 빈칸에 들어올 수 없는 코드는? ( ② )
① new B()
② (B) new A()
③ new D()
④ new E()
4. Controller 클래스의 setService() 메소드를 호출하려고 합니다. setService() 메소드의 매개값으로 올 수 있는 것에 O표, 올 수 없는 것에 X표 하세요.
Public class Controll{
public MemberService service;
public void setService(MemberService service) {
this.service = service;
}
}
Controll controller = new Controller();
controller.setService(_____________________________);
① new Service() ( X )
② new MemberService() ( O )
③ new Aservice() ( O )
④ new Bservice() ( O )
⑤ new Boardservice() ( X )
⑥ new Dservice() ( X )
5. Service 클래스들이 다음과 같이 선언되어 있습니다. 4번의 Controller의 객체를 생성하고 setService() 메소드를 호출한 뒤, service.login() 메소드를 호출하면 어떤 내용이 출력되는지 빈칸에 기술해보세요.
(setService()의 매개타입은 MemberService고, 이어서 필드값이 변경된다. 첫번째 출력 과정은 매개값에 MemberService 객체가 사용되고 있으므로, 타입 변환이 일어나지 않는다. 반면 두번째 출력 과정에서는 MemberService의 자식 객체인 AService가 매개값으로 들어가 있기 때문에 부모클래스 타입으로 자동 타입 변환이 일어난다. 이 때, 부모 클래스의 메소드 login()은 자식 클래스에서 메소드 재정의가 되고 있다. 자동 타입 변환될 때 재정의된 메소드를 이용하게 되므로, AService클래스의 login()메소드를 실행하게 된다.)
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java 상속 #6 (0) | 2023.02.20 |
---|---|
Java 상속 #5 (0) | 2023.02.17 |
Java 상속 #4 (0) | 2023.02.17 |
Java 상속 #3 (0) | 2023.02.16 |
Java 상속 #2 (0) | 2023.02.16 |