클래스를 재사용하는 방법
1) 상속: ~은 ~이다.(is-a)
2) 포함관계: ~은 ~을 가지고 있다.(hsa-a)
1. 상속(Inheritance)
1) 상속이란?
- 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것(코드의 재사용)
- 두 클래스를 부모와 자식으로 관계를 맺어주는 것
- 자손은 조상의 모든 멤버를 상속 받음(생성자, 초기화 블럭 제외)
- 자손의 멤버 개수는 조상보다 같거나 많음
- 자손의 변경은 조상에 영향을 미치지 않음
2) 상속을 구현하는 방법: 키워드 'extends' 사용
class 자식클래스 extends 부모클래스 {
//...
}
3) 단일 상속(single inheritance)
- Java는 단일 상속만 허용(c++은 다중상속 허용)
- 다중 상속을 허용하면 복합적인 기능을 가진 클래스를 쉽게 작성할 수 있지만 클래스간 관계가 복잡해지고 상속받은 멤버 이름이 같은 경우 구별할 수 있는 방법이 없음
- 따라서 단일 상속은 클래스 간의 관계가 명확하고, 다중 상속보다 코드 신뢰성이 더 높음
- 비중이 높은 클래스 하나를 상속관계, 나머지는 포함관계로하여 다중 상속과 같은 효과를 낼 수 있음
2. 포함(Composite)관계
1) 포함관계란?
- 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것
- 작은 단위 클래스들을 만들고, 그 클래스들을 조합하여 새로운 클래스를 만드는 것
2) 포함 관계를 사용하는 이유
하나의 거대한 클래스를 작성하는 것보다 단위별로 여러개의 클래스를 작성하고, 단위 클래스들을 포함 관계로 재사용 시 간결한 코드를 작성할 수 있음
3) 예시
class Point {
int x;
int y;
}
class Circle {
Point c = new Point(); // Point 클래스를 재사용, 'Circle은 Point를 가지고 있다'-> 포함관계
int r;
}
'Java' 카테고리의 다른 글
Java 오버라이딩(Overriding) 과 오버로딩(Overloading) (0) | 2022.12.26 |
---|---|
Java 모든 클래스의 조상 Object 클래스 (0) | 2022.12.24 |
Java 변수의 초기화 (0) | 2022.10.10 |
Java 생성자 간 호출 this()와 객체 자신을 가리키는 참조변수 this (0) | 2022.10.09 |
Java 생성자(constructor) (0) | 2022.10.09 |