새소식

JAVA (개념, 알고리즘)

상속과 포함관계

  • -

상속 관계

 

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

상속을 통해서 클래스를 작성하다 보면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다.

 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다.

 

방법은 아래와 같다.

 

class Parent { }
class Child extends Parent {
	// ...
}

만일 Parent 클래스에 age라는 정수형 변수를 멤버변수로 추가하면, 자손 클래스는 조상의 멤버를 모두 상속받기 때문에, Child 클래스는 자동적으로 age라는 멤버변수가 추가된 것과 같은 효과를 얻는다.

class Parent {
	int age;
}

class Child extends Parent { }

반대로 Child 클래스에 새로운 멤버로 메서드를 추가한다고 해도 조상인 Parent 클래스에는 아무런 영향도 받지 않는다.

 

즉, 자손 클래스는 조상 클래스의 모든 멤버를 상속 받으므로 항상 조상 클래스보다 같거나 많은 멤버를 갖는다. 

 

정리 1)

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

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

 

정리 2)

- 자손 클래스의 인스턴스를 생성하면 조상 클래스의 멤버도 함께 생성되기 때문에 따로 조상클래스의 인스턴스를 생성하지 않고도 조상 클래스의 멤버들을 사용할 수 있다.

 

 

포함 관계

한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것을 뜻한다.

class Circle {
    int x;
    int y;
    int r;
}
class CIrcle {
    Point c = new Point();
    int r;
}

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

- 또한, 작성된 단위 클래스들은 다른 클래스를 작성하는데 재사용될 수 있다.

 

상속과 포함 관계 결정하기

클래스를 가지고 문장을 만들었을 때, "~은 ~이다."라는 문장이 성립한다면, 서로 상속 관계이다.

만약, "~은 ~을 가지고 있다."는 문장이 성립한다면 포함 관계이다.

 

※ 주의

자바에서는 단일 상속만을 허용한다. 따라서 둘 이상의 클래스로부터 상속을 받을 수 없다.

 

- Object 클래스

- 모든 클래스 상속계층도의 최상위에 있는 조상클래스.

- 다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동적으로 Object 클래스로부터 상속받게 함으로써 이것을 가능하게 한다.

 

'JAVA (개념, 알고리즘)' 카테고리의 다른 글

Comparator와 Comparable  (0) 2023.01.04
오버라이딩과 오버로딩  (0) 2022.12.28
생성자  (0) 2022.12.22
객체배열과 클래스  (0) 2022.12.22
[JAVA] 타입 간의 변환방법  (0) 2022.12.21
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.