ch7-5 단일 상속 (Single Inhertiance)
- Java는 단일 상속만을 허용한다. (C++은 다중상속 허용) = 하나의 부모만 상속
class TvDvD extends Tv, DVD { //에러, 조상은 하나만 허용한다.
//...
}
- 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.
class Tv {
boolean power;
int channel;
void power() { power = !power; }
void channelUp() { ++channel; }
void channelDown() { --channel; }
}
class DVD {
boolean power;
void power() { power = !power; }
void play() { /*내용생략*/ }
void stop() { /*내용생략*/ }
void rew() { /*내용생략*/ }
void ff() { /*내용생략*/ }
}
class TvDVD extends Tv { // Tv 상속관계
DVD dvd = new DVD();// DVD 포함관계
// 객체 사용 (기능을 호출해서 사용)
void play() {
dvd.play();
}
void stop() {
dvd.stop();
}
void rew() {
dvd.rew();
}
void ff() {
dvd.ff();
}
ch7-6 Object클래스 - 모든 클래스의 조상
- 부모가 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.
- 모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.
toString(), equals(Object obj), hashCode(), ... <- 9장에서 자세히
class Tv { // 부모 x
//...
}
class SmartTv extends Tv { // 부모 o
//...
}
// 컴파일 후
class Tv extends Object { // 컴파일러가 자동추가
// ...
}
class SmartTv extends Tv {
//...
}
- 상속 계층도 SmartTv -> Tv -> Object 모든 클래스의 최고 조상
class Circle extends Object { //부모 클래스가 없으면 Object 클래스 자동으로 상속
MyPoint p;
int r;
}
public class InheritanceTest {
public static void main(String[] args) {
Circle c = new Circle();
System.out.println(c.toString()); // "Circle@15db9742"
System.out.println(c); // 참조변수 c만 출력해도 toString() 사용한 결과가 같다.
}
}
'Dev > Java' 카테고리의 다른 글
[Java] 자바의 정석 기초편 ch7-10,11 참조변수 super, 생성자 super() (0) | 2022.04.25 |
---|---|
[Java] 자바의 정석 기초편 ch7 7~9 오버라이딩(overriding) (0) | 2022.04.25 |
[Java] 자바의 정석 기초편 ch7-3,4 클래스 간의 관계, 상속과 포함 (0) | 2022.04.22 |
[Java] 자바의 정석 기초편 ch7-1,2 상속 (0) | 2022.04.22 |
[Java] Map의 keyset() (0) | 2021.06.22 |