반응형
먼저 다중상속이란?
class Tv {}
class DVD {}
class TvDVD extends Tv, DVD {} // <- 다중상속
이런식으로 두 개 이상의 class를 상속 받는 것.
c++에서는 가능하다.
JAVA는 단일상속만을 허용한다
- 다중상속 시 발생할 수 있는 충돌문제 때문에 단일상속만 허용한다.
- 대신해 interface를 이용해 다중상속과 같은 효과를 낼 수 있다.
- 아래의 코드처럼 비중이 높은 클래스 하나만 상속관계, 나머지는 포함관계로 한다.
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() {}
}
class TvDVD extends Tv {
DVD dvd = new DVD();
void play() {
dvd.play();
}
}
Object class
: 모든 클래스의 조상
class Tv {}
이렇게 extends가 없어 아무것도 상속받지 않는 것처럼 보이는 class도
class Tv extends Object {}
compile 할 때 자동으로 Object class를 상속받는다.
- 모든 class는 Object class에 정의된 11개의 method를 상속 받는다.
- toString(). equals(Object obj), hashCode(), ...등의 method를.
그래서 따로 호출하지 않아도 위의 함수들을 사용할 수 있는 것.
그래서 상속계층도를 그려보자면
class TvDVD extends Tv {
DVD dvd = new DVD();
void play() {
dvd.play();
}
}
위의 코드는 Object <- Tv <- TvDVD 순으로 상속받고 있는 형태이다.
반응형
'☕ 자바 JAVA > ☕ 클래스와 함수 Class & Method' 카테고리의 다른 글
[JAVA]참조변수 super & 조상 생성자 super() (0) | 2024.03.27 |
---|---|
[JAVA]오버라이딩 Overrinding (0) | 2024.03.27 |
[JAVA]포함 composite (1) | 2024.03.22 |
[JAVA]상속 Inheritance (1) | 2024.03.13 |
[JAVA]생성자 this()와 참조변수 this (0) | 2024.03.10 |