ch7-5 단일 상속(Single Inheritance)
1. Java는 단일상속만을 허용한다.(C++은 다중상속 허용)
Tv, DVD가 2개의 부모를 받는 것이 불가능하다.
TvDVD가 Tv, DVD를 다중 상속받는다고 가정하면, Tv, DVD class에 이름이 같은 power 메서드가 있는데 내용이 다를 경우 충돌이 발생한다. Java가 나온 이후로 OOP언어는 단일 상속을 원칙으로 한다. 인터페이스를 사용하면 다중상속은 허용하면서 충돌이 일어나지 않게 Java가 해결책을 제시했다.
2. 비중이 높은 클래스 하나만 상속관계로 나머지는 포함관계를 한다.
인터페이스를 사용하지 않고 다중 상속처럼 사용하려면 하나만 상속관계로 하고 나머지는 포함관계로 만든다. Tv는 상속으로 처리하고 DVD는 포함으로 TvDVD에 메서드 이름과 같에 껍데기만 만들어서 dvd 메서드를 호출만 한다.
ch7-6 Object 클래스 - 모든 클래스의 조상
1. 부모가 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.
2. 모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.
toString( ), equels(Object obj), hashCode( ), ...
컴파일러가 부모가 없는 class는 extends Object 자동추가해준다.
3. 상속 계층도
모든 클래스는 그 끝에 조상으로 Object클래스가 있다. 클래스의 최고 조상은 Object이다. Object는 클래스의 조상이고, 무조건 Object클래스에 정의된 11개의 메서드를 상속받는다.
4. 실습
부모가 없으므로 MyPoing class와 Circle class는 Object를 상속받는다. 자동으로 extends Object를 추가해주는 역할을 컴파일러가 한다. 상속받은 Object의 메서드인 toString( )을 사용할 수 있다.
println(c);를 쓰면 결과가 같다. println 메서드가 참조변수의 주소값을 출력한다.
'자바 > 자바의 정석 Ch.7 객체지향 프로그래밍 II' 카테고리의 다른 글
ch7-10,11 참조변수 super, 생성자 super() (0) | 2023.04.15 |
---|---|
ch7-7~9 오버라이딩(overriding) (0) | 2023.04.13 |
ch7-3,4 클래스 간의 관계, 상속과 포함 (0) | 2023.04.13 |
ch7-1,2 상속 (0) | 2023.04.13 |
ch7-32 추상 메서드 - 수정ing (0) | 2023.03.26 |