다른 클래스에서 속성과 특성을 도출하는 클래스의 기능을 상속이라고합니다. 상속은 객체 지향 프로그래밍의 가장 중요한 특징 중 하나입니다.
하위 클래스:다른 클래스의 속성을 상속하는 클래스를 하위 클래스 또는 파생 클래스라고합니다.
수퍼 클래스:속성이 하위 클래스에 의해 상속되는 클래스를 기본 클래스 또는 수퍼 클래스라고합니다.
이 기사는 다음 하위 항목으로 나뉩니다.
- 상속을 사용하는 이유와시기?,
- 상속의 모드
- 상속의 유형
상속을 사용하는 이유와시기?
차량 그룹을 고려하십시오. 버스,자동차 및 트럭 용 클래스를 만들어야합니다. 메소드 fuelAmount(),capacity(),applyBrakes()는 세 클래스 모두에 대해 동일합니다., 을 작성하는 경우 이러한 클래스를 피하고 상속 그런 다음 우리를 작성해야 이 모든 기능의 각각에서 세 개의 클래스로 아래 그림과 같이
명확하게 확인할 수 있습는 위의 과정이 결과에 중복되는 코드와 동일 3 번입니다. 이로 인해 오류 및 데이터 중복 가능성이 높아집니다. 이러한 유형의 상황을 피하기 위해 상속이 사용됩니다., 우리가 만들기 클래스 차량에 쓰는 이러한 세 가지 기능에서 그와 상속의 나머지는 클래스 차량에서 클래스가 있습니다,그 후에 우리는 단순히 피하는 데이터 중복하고 재사용성을 높. 양에서는 아래 다이어그램에서는 세 개의 클래스를 상속하는 차량 종류:
상속을 사용하여,우리는 우리를 쓰는 기능을 하나의 세 번으로 우리는 상속의 나머지 세 개의 클래스에서 기본 클래스(차량).,
c++에서 상속 구현:기본 클래스에서 상속되는 하위 클래스를 만들려면 아래 구문을 따라야합니다.
Syntax:
class subclass_name : access_mode base_class_name{ //body of subclass};
여기에,subclass_name 는 이름의 서브 클래스로,서버의 모드에서는 상속할 이 서브 클래스 예를 들어 공개,비공개 등. 그리고 base_class_name 은 하위 클래스를 상속 할 기본 클래스의 이름입니다.
참고:파생 클래스는 개인 데이터 멤버에 대한 액세스를 상속하지 않습니다., 그러나 해당 클래스가 선언 한 모든 개인 멤버를 포함하는 전체 부모 객체를 상속합니다.
출력:
Child id is 7Parent id is 91
위에서 프로그램은’아동’등은 공개로부터 상속된’부모’클래스는 그래서 공공데이터 클래스의 구성원’부모’또한 것 상속받은 클래스’아동’.
상속 모드
- 공용 모드:공용 기본 클래스에서 하위 클래스를 파생하는 경우., 다음 공중의 구성원이 기본 클래스가 공개에서 파생된 클래스고 보호된 구성원의 기본 클래스가 될 것이다호에서 파생된 클래스입니다.
- 보호 모드:보호 된 기본 클래스에서 하위 클래스를 파생하는 경우. 그런 다음 기본 클래스의 공용 멤버와 보호 된 멤버가 모두 파생 클래스에서 보호됩니다.
- 개인 모드:개인 기본 클래스에서 하위 클래스를 파생하는 경우. 그런 다음 기본 클래스의 공개 멤버와 보호 된 멤버 모두 파생 클래스에서 비공개가됩니다.,
참고:개인 회원 기본 클래스에 직접 액세스할 수 없습에서 파생된 클래스는 동안 보호된 구성원은 직접 액세스할 수 있습니다. 예를 들어 클래스 B,C 및 D 는 모두 아래 예제의 변수 x,y 및 z 를 포함합니다. 그것은 단지 접근의 문제입니다.,
아래 표에는 위의 세 가지 모드를 표시 접속자의 구성원의 기본 클래스의 서브 클래스에서 파생할 경우 공용,보호 및 개인 형태:
유형의 상속에서는 C++
특별한 경우의 상속 하이브리드:Multipath 상속:
파생 클래스 두 개의 기본 클래스고 이러한 두 가지 기본 클래스가 중 하나는 일반적인 기본 클래스라는 다중한 유산이다. 이러한 유형의 상속에서 모호성이 부정 될 수 있습니다.,
고려하려면 다음 프로그램이 필요합니다.
출력:
A from ClassB : 10A from ClassC : 100B : 20C : 30D : 40
위의 예제에서,모두 기본&ClassC 상속 인터페이스 또는 멤버 하에,그들은 모두 하나의 사본의 인터페이스 또는 멤버 하. 그러나 ClassD 상속가 모두 기본&ClassC,따라서 ClassD 가 있는 두 개의 복사본 인터페이스 또는 멤버 하나에서는 기본과에서 다른 ClassC.,
경우 우리는 데이터에 액세스할 필요가 있는 회원의 인터페이스 또는 멤버 하을 통해 개체의 ClassD,우리 경로를 지정하에서 액세스할 수 있는지 여부,그것은에서는 기본 또는 ClassC,bco’z 컴파일러 구별할 수 없습니다 두 개의 복사본의 인터페이스 또는 멤버 하에서 ClassD.
2 가지 방법이 있습니다 이를 방지하기 위해 모호성.
- 사용 범위 결정 운영
- 사용 가상 기본 클래스가
피하고 모호성에 사용하는 범위 해상도 운영:
사용하는 범위 해상도자 우리는 직접 지정한 경로에서는 데이터 구성원에 액세스할 수 있와 같이 문을 3 과 4 위의 예입니다.,
obj.ClassB::a = 10;
obj.ClassC::a = 100;
참고:아직도가 있는 두 개의 복사본 인터페이스 또는 멤버 하에서 ClassD.,
피하는 모호함을 사용하여 가상의 기본 클래스:
출력:
A : 100B : 20C : 30D : 40
에 따르면,위의 예 ClassD 는 복사본을 하나의 인터페이스 또는 멤버 하므로, 문 4 을 덮어의 가치는,주어진 문 3.
이 기사는 가혹한 Agarwal 에 의해 기고되었습니다. 는 경우 다음과 같 GeeksforGeeks 및 참여하고 싶다면,당신은 또한 수를 사용하여 문서를 써주세요 contribute.geeksforgeeks.org 또는 메일로서 귀하의 문서 [email protected]., GeeksforGeeks 메인 페이지에 나타나는 기사를보고 다른 괴짜를 도와주세요.
주의 독자! 지금 배우는 것을 멈추지 마십시오. 학생 친화적 인 가격으로 c++Foundation 및 STL 과정을 통해 모든 중요한 C++Foundation 및 STL 개념을 파악할 수 있으며 업계 준비가됩니다.