Programming Language/Java

[Java] 상속(inheritance)

LeeJaeJun 2023. 12. 30. 23:50
728x90
반응형

상속

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

- 장점:

 1) 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있다.

 2) 코드를 공통적으로 관리할 수 있어 코드의 추가 및 변경이 매우 용이하다.

 => 클래스 간의  상속관계를 맺어주면 자식 클래스들의 공통된 부분은 조상 클래스에서 관리하고, 자손 클래스는 자신에 정의된 멤버들만 관리하면 되기 때문이다.

 

자바에서 상속을 구현하기 위해서는 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 extends와 함께 써주면 된다.

class SportsCar extends Car {
	///
}

위 두 클래스는 서로 상속관계에 있다고 하며, 상속해주는 클래스(Car)를 '조상 클래스', 상속받는 클래스(SportsCar)를 '자손 클래스'라고 한다.

 

조상 클래스 = 부모(parent) 클래스 = 상위(super) 클래스 = 기반(base) 클래스

자손 클래스 = 자식(child) 클래스 = 하위(sub) 클래스 = 파생된(derived) 클래스

 

- 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다.

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

- 접근 제어자(access modifier)가 private 또는 default인 멤버들은 상속은 되지만 자손 클래스로부터의 접근이 제한된다.

- 자손 클래스의 인스턴스를 생성하면 조상 클래스의 멤버와 자손 클래스의 멤버가 하나로 합쳐진 하나의 인스턴스로 생성된다.

- 자바는 다중 상속이 안된다.

 

(+) 클래스를 재사용하는 방법에는 상속 이외에도 포함(Composite)관계가 있다. 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것이다.

class Point{
	int x;
	int y;
}

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

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

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

(+) 클래스를 가지고 문장을 만들었을 떄 '~은 ~이다.'라는 문장이 성립하면 서로 상속관계를 맺어 주고, '~은 ~을 가지고 있다.'는 문장이 성립한다면 포함관계를 맺어주면 된다.

728x90
반응형

'Programming Language > Java' 카테고리의 다른 글

[Java] 제어자(modifier)  (0) 2023.12.31
[Java] 오버라이딩(overriding)  (1) 2023.12.30
[Java] 오버로딩(overloading)  (0) 2023.12.30
[Java] 변수의 종류  (0) 2023.12.30
[Java] 클래스와 객체  (0) 2023.12.30