본문 바로가기

Study/자바의정석.연습문제풀기

자바의정석_연습문제_19.12.11.WEN

Ch7. 객체지향프로그램2 (Object-oriented Programming II)

ㅡ연습문제 7.20 ~ 7.26 (7단원. 29번까지 존재)

 

 

[ 7.20 ]

  오답풀이) 조상 클래스에 선언된 멤버변수와 같은 이름의 인스턴스변수를 자손 클래스에 중복으로 정의했을 때, 조상타입의 참조변수로 자손 인스턴스를 참조하는 경우와 자손타입의 참조변수로 자손 인스턴스를 참조하는 경우는 서로 다른 결과를 얻는다.

 

메서드의 경우 조상 클래스의 메서드를 자손클래스에서 오버라이딩한 경우에도 참조변수의 타입에 관계없이 항상 실제 인스턴스의 메서드(오버라이딩된 메서드)가 호출되지만, 멤버변수의 경우 참조변수의 타입에 따라 달라진다.

 

 

[ 7.21 ]

  오답풀이) null, Movable 인터페이스를 구현한 클래스 또는 그 자손의 인스턴스

ㅡ> 매개변수의 다형성 이해도 확인 문제.

 

 

[ 7.22 ]

 

[ 7. 23 ]

해답풀이) Shape 타입의 배열에는 Shape의 자손 인스턴스가 들어있기에 Shape클래스의 추상메서드 calcArea()를 호출해도 실제로는 각 인스턴스에서 완전히 구현된 calcArea()가 호출된다.

 

[ 7.24 ]

 

[ 7.25 ]

오답풀이) 내부 클래스(인스턴스 클래스)의 인스턴스를 생성하기 위해서는 먼저 외부클래스를 생성한다.

'인스턴스 클래스'는 외부 클래스의 '인스턴스 변수'처럼 외부 클래스의 인스턴스가 생성되어야 쓸 수 있기 때문이다.

 

[ 7.26 ]

오답풀이) 스태틱 클래스(static)는 인스턴스 클래스와 달리 외부 클래스의 인스턴스를 생성하지 않고도 사용할 수 있다. 마치 static멤버를 인스턴스 생성없이 사용할 수 있는 것처럼.