남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
상속 (Inheritance)
- 기존의 클래스로 새로운 클래스를 작성하는 것 (코드의 재사용)
- 두 클래스를 부모와 자식으로 관계를 맺어주는 것 (extends 키워드 사용)
class 자식클래스 extends 부모클래스 {
// ....
}
- 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외)
- 자손의 멤버 개수는 조상보다 적을 수 없다. (같거나 많다)
- 자손의 변경은 조상에 영향을 미치지 않는다.
class Point { // 2차원 좌표의 한점 (x,y)
int x;
int y;
}
class Point3D{ // 3차원 좌표의 한점 (x,y,z)
int x;
int y;
int z;
}
class Point3D extends Point{ //Point 클래스를 상속받아서 int z변수만 선언하여 사용 가능
int z;
}
포함 (composite)
- 클래스의 멤버로 참조변수를 선언하는 것
- 작은단위로 클래스를 만들고, 이 들을 조합해서 클래스를 만든다.
class Circle {
int x;
int y;
int r;
}
class Circle {
Point c = new Point();
int r;
}
class Point {
int x, y;
}
* Circle이 Point를 포함하고 있음.
* 어느쪽이 좋다고 말할 수 는 없지만, 구조적으로 조금 다른
* 포함시킨 쪽이 복잡도가 줄어들긴 함 (참고)
클래스 간의 관계 결정하기
상속관계 : '~은 ~이다 (is -a)'
포함관계 : '~은 ~을 가지고 있다. (has -a)'
원(Circle)은 점(Point)이다. - Circle is a Point
원(Circle)은 점(Point)을 가지고 있다. - Circle has a Point
class Circle{
Point c = new Point () ;
int r;
} // 포함관계
class Circle extends Point {
int r ;
} // 상속관계
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 ( 참조변수 super / 생성자 super() ) (0) | 2020.07.10 |
---|---|
자바의 정석 기초 ( 단일상속 / Object 클래스 / 오버라이딩 / 오버로딩 ) (0) | 2020.07.10 |
자바의 정석 기초 ( 생성자 this() / 참조변수 this / 변수의 초기화 / 초기화 순서 ) (0) | 2020.07.09 |
자바의 정석 기초 ( 오버로딩 ) (0) | 2020.07.09 |
자바의 정석 기초 ( 생성자 (constructor)/ 생성자 규칙 / 기본 생성자 (default constructor ) / 매개변수가 있는 생성자 ) (0) | 2020.07.09 |
댓글