자바를 잡아라

[JAVA][객체2] 상속/포함관계

presnt__lee 2023. 7. 5. 16:14
반응형

1. 상속관계

 

상속이란?

기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 

적은 양의 코드로 새로운 클래스를 작성할 수 있는 코드를 공통적으로 관리할 수 있기 떄문에 코드 관리 용이하다.

재사용성 높이고, 중복을 제거하고, 생산성과 유지보수에 기여

 

특징

1. 자손 클래스는 조상 클래스의 모든 멤버를 상속받는다. (단, 생성자와 초기화 블럭은 상속되지 않는다.)

2. 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다. 

 

 

2. 포함관계

기존

각각의 클래스가 따로 있는 경우

1)
class Circle{
int x; // 원점의 x좌표
int y; // 원점의 y좌표
int r; // 반지름(radius)
}

2)
class Point{
int x;  //x좌표
int y; 	//y좌표

}

변경 

point 클래스를 재사용해서 Circle클래스를 작성한다면 다음과 같이 할 수 있다. 

class Circle{
int x;
int y;
int r;
}

class Circle{
Point c = new Point(); // 원점
int r; 

}

하나의 거대한 클래스를 작성하는 것보다,

1) 단위별로 여러 개의 클래스를 작성한 다음, 이 단위 클래스들을 포함관계로 재사용하면 보다 간결하고 손쉽게 클래스를 작성할 수 있다.

2) 작성한 단위 클래스들은 다른 클래스를 작성하는데 재사용될 수 있을 것이다. 

 

 

3. 클래스 간의 관계 결정하기 ( 상속이냐, 포함이냐) 

일반적으로 포함관계가 90%라고 볼 수 있다. 상속은 제약이 많아서 꼭 필요할때만 사용하는 경우가 많다. 

 

상속관계: '~은 ~이다.(is-a)'

포함관계: '~은 ~을 가지고 있다.(has-a)'

 

ex)

원은 점이다. -> 상속관계

원은 점을 가지고 있다.   -> 포함관계 

 

cf. 4. 단일 상속

다중 상속을 C++에서는 다중 상속을 허용하지만, 자바에서는 단일 상속만을 허용한다. 

다중 상속이 필요할때는 1) 인터페이스를 이용하거나 2) 비중이 높은 클래스 하나를 상속하고, 나머지를 포함관계로 한다. 

 

cf. 5. 모든 클래스의 조상 object 클래스

따라서 주요 메서드로는 toString()과 equals(Object o )등이 있으며 기본적으로 사용 가능하다. 

 

 

 

반응형

'자바를 잡아라' 카테고리의 다른 글

[JAVA] chapter 3 연산자  (0) 2023.08.08
[JAVA] chapter2 변수  (0) 2023.08.07
[JAVA] 변수의 초기화  (0) 2023.07.05
[JAVA] 생성자/ This  (0) 2023.07.04
[JAVA] 메서드 오버로딩(overloading)  (0) 2023.07.04