스마트웹앱콘텐츠전문가/C++

[객체 지향 언어의 특징][상속]

9D4U 2019. 1. 14. 11:29
728x90
반응형

○ 상속의 기본 개념

- [기본의미]부모의 성질을 물려 받는 것 -> 하나의 클래스가 다른 클래스에서 정의되어 있는 성질이나 특성을 물려 받을 수 있는데 클래스의 정의된 성질이나 특성은 멤버 변수나 함수를 그대로 사용할 수 있음을 의미 = 재사용성, 다형성(Polymorphism)

- 부모 클래스와 자식 클래스

  사용예시) class 자식 클래스 : public 부모 클래스 {/* 중간 코드 생략 */};

○ 상속과 접근 지정자(객체지향에서 정보 은폐의 특징을 표현00)

- 자식 클래스가 부모 클래스의 멤버 변수나 함수를 사용할 때에는 접근 지정자(public, protected, private 등)에 따른 제약 사항이 있음.

  'private' : 부모 클래스 내부에서만 사용 가능(단, 프렌드 함수 사용 시 에는 사용 가능) ex) 금고(집안에서 개인적인 물건)

  'protected' : 부모 클래스와 부모를 상속받는 자식 클래스의 내부에서만 사용 가능 ex) 집안의 냉장고(집안에서는 공동물건)

  'public' : 부모 클래스와 자식 클래스 밖에서도 사용 가능 ex)공공장소

  '->' : 클래스 멤버 접근 포인터 연산자


● 상속 접근 지정자

 상속 접근 지정자

기반 클래스 

파생 클래스로의 상속형태 

public 

 public

public 

private 

접근 불가 

protected 

protected 

 private

private 

private 

private 

접근 불가 

protected 

private 

 protected

public 

protected 

private 

접근 불가 

protected 

protected 




○ 생성자를 이용한 초기화

○ c++ 클래스들은 생성자와 소멸자를 가질 수 있는데,

  생성자의 경우, 클래스의 인스턴스가 만들ㄹ어질 떄 호출되고, 상속을 이용할 때에는 부모와 자식의 생성자가 모두 호출되면서 클래스의 인스턴스가 초기화 됨.(이떄, 부모의 생성자가 먼저 호출되고 자식의 생성자가 호출됨.)

  소멸자의 경우, 이와 반대로 자식의 소멸자가 먼저 호출이 되고 난 이후에 부모의 소멸자가 호출됨.

○ 생정자의 인수 전달

- 생성자를 호출하는 경우에 부모 클래스에서 자식 클래스로 인수를 전달할 수 있는데, 생성자에서 초기화할 떄,

  부모의 클래스에서 자식 클래스로 인수를 전달할 수 있는데, 생성자에서 초기화할 떄 부모 클래스의 인자를 넘겨서 확장된 형태의 자식 클래스를 사용할 수 있도록 해줌.

  형식 : ChildClass::Constructor(변수 리스트):ParentClass(변수 리스트)

○ 생성자에서 부모의 생성자 호출

- (자식)생성자에서 부모의 클래스의 생성자를 불러서 초기화를 하고 싶은 경우, 부모 클래스의 생성자를 직접 호출해서 자식 크래스의 생성자의 기본 초기화 과정을 수행 가능

예시) ChildClass::Constructor(변수 리스트):ParentClass(변수 리스트){ ParentsClass::Constructor(변수 리스트); }

- 자식 클래스에서 부모 클래스의 생성자를 이용하면 기본적인 부모 클래스의 생성자를 호출해서 직접 값을 넘겨 줄 수 있기 떄문에 보다 정확한 클래스의 초기확가 가능하다는 장점을 제공해 줄 수 있음.

728x90

'스마트웹앱콘텐츠전문가 > C++' 카테고리의 다른 글

[가상 함수와 다중 상속 : 상속의 개념 연장선]  (0) 2019.01.14
[friend와 연산자 오버로딩]  (0) 2019.01.11
[객체배열과 객체포인터]  (0) 2019.01.10
함수  (0) 2019.01.09
기초구문  (0) 2019.01.08