20111219_상속

Programming/C, C++ 2011. 12. 19. 18:14 |

상속
이미 정의되어 있는 클래스의 모든 특성을 물려 받아 새로운 클래스를 작성하는 기법
클래스를 더 쉽게 만들 수 있는 고수준의 재사용성을 확보하고 클래스간의 계층적인 관계를 구성함으로써
객체 지향의 또 다른 특징인 다형성의 문법적 토대가 된다.

- 목적과 효과
1. 기존의 클래스를 재활용.
2. 반복을 제거하고 유지보수를 편리하게 함
3. 객체의 집합에 다형성을 부여함.

- 특성
1. 하나의 기반 클래스로부터 여러 개의 클래스를 파생시킬 수 있다.
2. 하나의 클래스로부터 파생될 수 있는 클래스의 개수에 제한이 없을 뿐만 아니라 파생의 깊이에도 제한이 없다.
3. 기본타입(int, double 등)으로부터의 상속은 허가되지 않는다.

- 파생클래스 정의
class 파생클래스 : { 액세스지정자 } 기반클래스
{
 추가멤버선언;
}

- 클래스 접근 제한

- 예제



- 파생클래스에서의 기반클래스멤버 초기화
19 Line Point(int ax, int ay, char ach) : Coord(ax, ay) { ch = ach; }
34 Line Circle(int ax, int ay, char ach, int aRad) : Point(ax,ay,ach) { Rad = aRad; }

상속받은 멤버는 파생클래스에서 직접 초기화할 수 없으며 기반 클래스에게 초기화를 부탁해야 한다.
파생 클래스는 기반 클래스의 모든 멤버를 상속받기는 하지만 이 멤버를 어떻게 초기화해야 하는지도 잘 모르고
상속받는 멤버 중 일부가 private 속성을 가질 수도 있다.

가령 저런 식으로 하는 게 아닌 파생클래스의 생성자 본체에서 기반클래스의 생성자를 직접적으로 호출하는 뻘짓을 감행한다면,
Circle(int ax, int ay, char ach, int aRad) {
 Point(ax,ay,ach);
 Rad=aRad;
}
이게 된다고 착각하는 짓은 하지 말자. 이름없는 임시 Point 객체를 만들어 초기화하는 거임...

- 멤버 함수 재정의
... 다음에ㅋ









참고
http://www.winapi.co.kr/

'Programming > C, C++' 카테고리의 다른 글

20120109_복사생성자, const  (0) 2012.01.09
20111216  (0) 2011.12.16
20111215_구조체, 상속성  (0) 2011.12.15
20111212_C 기초부터 정리하긔  (0) 2011.12.12
20111212_정적멤버변수/함수, 상수멤버  (0) 2011.12.12
Posted by HUEJI
: