Quiz #1: 그림그리고 파악하기
- A, B, C, D, F, G는 클래스이고 IA, IB, IC 는 인터페이스이며, 아래와 같은 관계가 성립한다.
- A에는 a(), B에는 b(), C클래스에는 c()가 있다.
- IA에는 ia(), IB에는 ib(), IC에는 ic() 가 정의되어 있는 상태이다.
- 클래스 헤더 작성 연습 ->
public class A
- A is-a B: A는 B를 상속받는다. ->
public class A extends B
- C is-a D, F: JAVA에서는 다중 상속이 불가능하다.
- A is-a B implements IB ->
public class A extends B implements IB
- C is-a B implements IA, IB, IC ->
public class C extends B implements IA, IB, IC

- 상위 인터페이스에서 정의된 기능을 구현하지 않으면 오류가 발생한다.
- A 객체로 접근할 수 있는 메소드는 몇 개인가? -> a() b(), ib() 3개
- C 객체로 접근할 수 있는 메소드는 몇 개인가? - c(), b(), ia(), ib(), ic() 5개
Quiz #2: 짱구-엄마-할머니

- mom.요리하기() -> ?
- 엄마와 짱구는 할머니 클래스에서 물려받은 요리하기를 오버라이딩했다.
- mom은 짱구 객체를 생성하여 엄마로 참조한 것이다.
- -> 객체가 짱구이고, 짱구에 요리하기()가 존재하므로 짱구가 오버라이딩한 요리하기()를 호출한다. -> 컵라면
Quiz #3. a, b, c를 이용하면 어떤 요리를 할 수 있을까요?

- 상속 -> 객체 생성 시 쌓아가는 형태. 할머니 멤버로 객체 생성 + 엄마 붙이고 + 짱구 붙이기
- 짱구 객체에서 요리하기()를 호출하면 짱구에서 정의된 요리하기() 호출
- a. -> 할머니의 관점이므로 요리하기()만 가능 -> 짱구 객체이므로 컵라면
- b. -> 엄마의 관점이므로 요리하기(), 할머니처럼요리하기() 가능 -> 짱구 객체이므로 각각 컵라면, 된장/고추장/김치
- c. -> 짱구의 관점이므로 짱구 클래스에서 정의된 모든 요리하기 가능
- c.요리하기(b)로 엄마 b를 인자로 받아도, 엄마 b는 짱구 객체를 참조하므로 컵라면

- 엄마 클래스에 할머니처럼요리하기()가 있으므로 짱구 클래스에서 삭제해도 되지 않을까?
- 가능! 정상적으로 할머니의 요리하기() 호출됨
Quiz #4. 아래 설계도를 관찰하고 테스트코드로 확인하세요

엄마 mom=new 엄마(); 후 mom.으로 볼 수 있는 멤버 속성/메소드는?
- 할머니에서 상속받은 지팡이, 레시피 (빨간내복은 private, 요리하기()는 오버라이딩)
- 엄마 클래스의 핸드폰압수bag (엄마 객체여도 엄마 클래스의 private은 클래스 소스코드 내부에서만 접근 가능 -> 캡슐화), 요리하기(), 청소하기(), 할머니처럼요리하기(), 핸드폰뺏기(짱구 짱)
-
짱구 s=new 짱구()' 후 s.으로 볼 수 있는 멤버 속성/메소드는?
- 할머니에서 상속받은 지팡이, 레시피
- 엄마에서 상속받은 핸드폰압수bag, 핸드폰뺏기(짱구 짱)
- 짱구 클래스의 getPhone(핸드폰), setPhone(핸드폰 phone), 요리하기(), 청소하기(), ...
- 마찬가지로 짱구 클래스의 phone은 private이므로 접근 불가능
-
엄마 mom=new 짱구(); 후 mom.으로 볼 수 있는 멤버 속성/메소드는?
- 짱구 객체에 존재하며 엄마 클래스에서 접근할 수 있는 것
- 지팡이, 레시피, 핸드폰압수bag, 요리하기(), 청소하기(), 할머니처럼요리하기(), 핸드폰뺏기(짱구 짱)