1. [객체지향] 상속성 (Inheritance)
ㅇ 상위/부모 클래스의 특성을 하위/자식이 상속(이어) 받아서,
- 기존에 정의된 특성(프로퍼티,메소드)을 재사용하고,
- 이에 추가/확장/개선 할 수 있게 하는 것
2. [객체지향] 상속의 잇점
ㅇ 코드의 `재사용`
ㅇ 기능의 `추가/확장/개선/재정의 등`
ㅇ 클래스 간에 `계층적인 관계짓기`
ㅇ 중복 코드를 없애 `유지보수성`이 좋아짐
3. [객체지향] 클래스의 상속 (Class Inheritance)
ㅇ 상속하는 원본 클래스
- 명칭 : 기초 클래스, 기본 클래스, 상위 클래스, 슈퍼 클래스, 부모 클래스 (Base Class,
Super Class, Parent Class) 라고 함
ㅇ 상속 받는 하위 클래스
- 명칭 : 유도 클래스, 파생 클래스, 서브 클래스, 자식 클래스 (Derived Class, Sub Class,
Child Class) 라고 함
ㅇ 사용 문법 例)
- (Java) class 자식클래스명 extends 부모클래스명 { }
- (C++) class 자식클래스명 : 접근제어지시자 부모클래스명 { }
※ 상속시 다음 사항들이 일어남
- 자식클래스의 인스턴스 생성시, 부모클래스의 생성자가 호출됨
- 자식클래스는 부모클래스의 멤버에 접근이 가능
- 자식클래스의 인스턴트를 통해 부모클래스의 메서드를 호출 가능
※ 결국, 자식클래스는, 부모클래스로부터,
- 상속 받은 프로퍼티나 메소드를 사용 가능하고,
- 메소드,속성을 수정하거나 새롭게 추가할 수 있음
4. [객체지향] 상속의 구분
ㅇ 단일 상속 (Single Inheritance)
- 오직 하나의 클래스 만을 상위 클래스로 할 수 있음
. 단일 상속의 그래프 형태는 트리(Tree) 구조로 표현됨
ㅇ 다중 상속 (Multiple Inheritance)
- 하나의 클래스가 여러 개의 클래스를 상위 클래스로 할 수 있는 상속구조임
. 클래스 래티스(Class Lattice)라고도 함
※ 한편,
- C++은, 다중 상속을 지원하나
- Java는, 지원하고 있지 않음
. 대신, 자바에서는 인터페이스 클래스를 제공
5. [객체지향] 다형태성
※ ☞ 다형태성 참조
- Override (연산의 재정의), Overload (연산의 다중정의)