class 자식클래스 extends(키워드) 부모클래스{ //... }
class Parent{ }
class Child extends Parent{
//...
}
자손은 조상의 모든 멤버를 상속받는다 (생성자, 초기화 블럭 제외)
자손의 멤버 개수는 조상보다 적을 수 없다(같거나 많다)
class Parent{
int age;
}
class Child extends Parent{ }
class Parent{
int age;
}
class Child extends Parent{
void play(){
System.out.println("놀자!");
}
}
- 클래스의 멤버로 참조변수를 선언하는 것 !
- 작은 단위의 클래스를 만들고, 이 들을 조합해서 클래스를 만든다
✔ 클래스의 관계는 두가지로 나뉘는데 하나는 위에서 설명 된 상속이고, 다른 하나는 포함이다
📝예시
class Circle{
int x; //원점의 x 좌표
int y; //원점의 y 좌표
int z; //반지름
}
class Circle{
Point c = new Point(); //원점
int r; //반지름
}
class Point{
int x;
int y;
}
✔ 원을 작성하는 방법으로 1,2번 둘 다 맞지만
1번 Circle은 기존 Point 클래스와 관계가 전혀 없고, 2번 Circle은 기존 Point 클래스와 포함 관계에 있다
상속관계 '~은 ~이다 (is - a)'
포함관계 '~은 ~을 가지고 있다 (has - a)'
//포함
class Circle{
Point c = new Point();
int z;
}
//상속
class Circle extends Point{
int z;
}
class Point{
int x;
int y;
}
class TvDVD extends Tv DVD{ //에러! 조상은 하나만 허용한다
//...
}
class Tv{ // = class Tv extends Object{
//..
}
class SmartTv extends Tv{
//..
}