상속
- 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것
- 두 클래스를 부모와 자식으로 관계를 맺어주는 것
- 자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외)
- 자손의 멤버개수는 조상보다 적을 수 없다.(같거나 많다.)
* 부모 클래스와 자식 클래스
부모클래스와 자식클래스는 슈퍼클래스와 서브클래스 등
언어마다 부르는 말이 다르지만 결국 상하의 관계를 나타내는 말 들이다.
부모클래스는 상속을 주는 클래스로서 상속을 받는
클래스에게 영향을 주게 된다.
결국 부모클래스는 공통적인 부분을 관리하게 된다.
반면 부모클래스의 상속을 받는 자식 클래스는
부모클래스의 변경에 영향을 받는 을의 위치다.
그래서 부모클래스의 변화에 따라 내용이 달라지기도 하지만
반대로 자식클래스는 부모클래스에게 영향을 미칠 수는 없다.
상속에는 Is-A 관계와 Has-A 관계가 있다.
우리가 흔히 아는 상속이란 개념은 Is-A방식이다.
Is-A방식은 클래스를 상속 받아서 그 클래스와 자기자신의 클래스를
하나의 클래스로 사용하는 방법이다.
이 방법은 자기 자신과 하나로 합쳐서 사용하는 방법이기때문에
상속받은 부모클래스의 내용을 마음대로 편집이 가능하다는 것이다
대표적으로 C#과 자바가 있다.
Has-A방식은 같은 상속이지만 조금 다르다.
Has-A방식은 자식클래스내에서 부모클래스의 객체를 생성하고
생성한 객체의 함수를 불러와 사용하는 방법이다.
대신 이 방법은 생성된 객체의 기능을 변경 할 수 없는 단점이 있다.
또한 상속에는 구현 상속과 인터페이스 상속이 있다.
구현 상속은 재상용성과 다형성 획득이라는 두가지 기능이 있다.
하지만 구현상속에서는 깨지기 쉬운 기반 클래스 문제가 있다.
인터페이스 상속은 다형성 획득과 인터페이스를 통한
은닉이라는 기능이 있다.
인터페이스 상속은 다형성 획득이라는 측면에서 볼때 안전하다.
결국 상속이란 우리가 흔히 사람사이에서 말하는
재산상속등을 말 할때 쓰는 상속과 같은 개념이라고 생각한다.
재산을 상속 받으면 나의 재산에 부모님의 재산이 더해지는 것 처럼
객체지향에서 상속을 받으면 부모클래스의 내용이
자식 클래스에게 전달 되어서 자식 클래스는
기존의 자기의 기능과 더불어 부모의 기능을 갖는 것이다.
그리고 자신의 상황에 따라 상속받은 재산을 사고 팔면서
유동적으로 자시 상황에 맞는 재물로 바꾸는 것처럼
재정의를 통해 필요한 형태로 바꾸어 사용하면 되는 것이다.
그리고 재사용성 측면에서 보면 상속보다는 합성이 더 좋은 것 같다.
상속은 불필요한 결합도를 증가시키기 때문에
모듈화라는 측면에서 볼때 좋지 않기 때문이다.
'Hoons.Net > C#' 카테고리의 다른 글
| 캠퍼스 시삽 과제 2-3) 정렬기능 (0) | 2012.08.07 |
|---|---|
| 캠퍼스 시삽 과제 2-2) 로또 추출기 (0) | 2012.08.07 |
| 캠퍼스 시삽 과제 2-1) 배열과 컬렉션의 차이 (0) | 2012.08.07 |
| 캠퍼스 시삽 과제 1-1) 캡슐화와 은닉화 (2) | 2012.08.06 |
| 캠퍼스 시삽 과제 1-1) 다향성 (0) | 2012.08.06 |