상속
: 기존의 클래스로 새로운 클래스를 작성하는 것 (코드의 재사용)
- 두 클래스를 부모와 자식으로 관계를 맺어주는 것
- 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외)
- 자손의 변경은 조상에 영향을 미치지 않는다.
class 부모클래스 {
...
}
class 자식클래스 extends 부모클래스 {
...
}
포함
: 클래스의 멤버로 참조변수를 선언하는 것
- 작은 단위의 클래스를 만들고, 이들을 조합해서 클래스를 만든다.
// Car는 Engine과 Door를 포함
class Car {
Engine e = new Engine();
Door[] d = new Door[4];
}
클래스 간의 관계 결정하기
- 상속 관계 - A는 B이다 (is-a) → 꼭 필요할때만 쓰임
- 포함 관계 - A는 B를 가지고 있다. (has-a) → 대부분 쓰임
→ 더 자연스러운 관계로 결정하면 된다.
ex)
원은 점이다 circle is a point (x)
원은 점을 가지고 있다 circle has a point (O)
-> 포함 관계가 더 자연스럽다.
class Circle {
Point c = new Point();
int r;
}
단일 상속
: 하나의 부모만 상속 가능
→ 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.
Object 클래스: 모든 클래스의 조상
- 부모가 없는 클래스는 자동으로 Object 클래스를 상속받는다.
- 모든 클래스는 Object 클래스에 정의된 11개의 메서드를 상속받는다.
- toString(), equals(Object obj), hashCode(), ...
class Tv { // 컴파일해보면 class Tv extends Object { }
...
}
class SmartTv extends Tv {
...
}
728x90
반응형
'객체지향 OOP' 카테고리의 다른 글
[자바의정석 기초 객체지향 개념] 참조변수 super, 생성자 super() (0) | 2022.05.30 |
---|---|
[자바의정석 기초 객체지향 개념] 오버로딩 VS 오버라이딩 (0) | 2022.05.30 |
[자바의정석 기초 객체지향 개념] 메서드 (0) | 2022.05.29 |
[자바의정석 기초 객체지향 개념] 클래스와 객체 (0) | 2022.05.29 |
[자바의정석 기초 객체지향 개념] 0주차 (0) | 2022.05.29 |
댓글