class 자식클래스(자손클래스) extends 부모클래스(조상클래스) {
// ...
} // extends는 확장한다는 의미
class Parent { }
class Child extends Parent { }
// Child라는 클래스를 만들 때, Parent라는 클래스를 상속 받음
// Child - 자식클래스, Parent - 부모클래스
class Parent {
int age;
}
class Child extends Parent {
void play () {
System.out.println("졸려");
} // 자신의 멤버 1개 + 상속받은 부모의 멤버 1개 => 총 2개
class Point {
int x;
int y;
}
class Circle {
int x; // 원점의 x좌표
int y; // 원점의 y좌표
int r; // 반지름(radius)
}
⬇️
class Point {
int x;
int y;
}
class Circle {
Point c = new Point();
// 클래스의 멤버로 다른 클래스 타입의 변수를 선언하고, 이 타입의 객체를 생성
int r;
}
class TVCR extends TV, VCR { // 에러 (하나의 부모만 상속)
// ...
}
다중상속(multiple inheritance) : 여러 부모클래스로부터 상속받는 것이 가능
- 단점 : 여러 조상 클래스로부터 다중상속을 받을 경우 자손 클래스들이 이름은 같고 내용이 다를 때 충돌이 일어날 수 있어 나중에 해결하기 어려움
class TV {
boolean power;
int channel;
void power () { power = !power; }
void channelUp () { ++channel; }
void channelDown () { --channel; }
}
class VCR {
boolean power;
int counter = 0;
void power () { power = !power; }
void play () { 생략 }
void stop () { 생략 }
void rew () { 생략 }
void ff() { 생략 }
}
class TVCR extends Tv { // 상속
VCR vcr = new VCR(); // 포함
void play() {
vcr.play();
}
void stop() {
vcr.stop();
}
void rew() {
vcr.rew();
}
void ff() {
vcr.ff();
} // 객체 사용
}
class Tv {
...
}
⬇️
class Tv extends Object { // 컴파일러가 자동적으로 추가
...
}