c++계승

4629 단어 c + +이어받다
대상 지향 프로 그래 밍 에서 가장 중요 한 개념 은 계승 이다.계승 은 다른 클래스 에 따라 하나의 클래스 를 정의 할 수 있 도록 해 줍 니 다.이 는 프로그램 을 만 들 고 유지 하 는 것 이 쉬 워 집 니 다.이렇게 하면 코드 기능 을 다시 사용 하고 실행 효율 을 높이 는 효과 도 얻 었 다.
클래스 를 만 들 때 새로운 데이터 구성원 과 구성원 함 수 를 다시 만 들 필요 가 없습니다.새로운 클래스 를 지정 하여 기 존 클래스 의 구성원 을 계승 하면 됩 니 다.이 기 존의 종 류 는 기본 류 라 고 부 르 고,새로 만 든 종 류 는 파생 류 라 고 부른다.
상속 은 is a 관 계 를 대표 한다.예 를 들 어 포유동물 은 동물 이 고 개 는 포유동물 이기 때문에 개 는 동물 이다.
기류&파생 류
한 종 류 는 여러 종류 에서 파생 될 수 있다.이것 은 여러 종류 에서 데이터 와 함 수 를 계승 할 수 있다 는 것 을 의미한다.파생 클래스 를 정의 합 니 다.우 리 는 하나의 파생 목록 을 사용 하여 기본 클래스 를 지정 합 니 다.클래스 파생 목록 은 하나 이상 의 기본 클래스 로 명명 되 며,형식 은 다음 과 같 습 니 다.

class derived-class: access-specifier base-class
그 중에서 액세스 수정자 access-specifier 는 Public,proctected 또는 private 중 하나 이 며,base-class 는 이전에 정 의 된 클래스 의 이름 입 니 다.접근 수정자 access-specifier 를 사용 하지 않 으 면 기본 값 은 private 입 니 다.
기본 Shape 가 있다 고 가정 하면 Rectangle 은 파생 류 입 니 다.다음 과 같 습 니 다.

#include <iostream>
 
using namespace std;
 
//   
class Shape 
{
  public:
   void setWidth(int w)
   {
     width = w;
   }
   void setHeight(int h)
   {
     height = h;
   }
  protected:
   int width;
   int height;
};
 
//    
class Rectangle: public Shape
{
  public:
   int getArea()
   { 
     return (width * height); 
   }
};
 
int main(void)
{
  Rectangle Rect;
 
  Rect.setWidth(5);
  Rect.setHeight(7);
 
  //        
  cout << "Total area: " << Rect.getArea() << endl;
 
  return 0;
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
Total area: 35
접근 제어 및 계승
파생 류 는 기본 클래스 의 모든 비 개인 구성원 을 방문 할 수 있다.따라서 기본 구성원 이 파생 클래스 의 구성원 함수 에 접근 하지 않 으 려 면 기본 클래스 에서 private 로 성명 해 야 합 니 다.
저 희 는 방문 권한 에 따라 서로 다른 방문 유형 을 정리 할 수 있 습 니 다.다음 과 같 습 니 다.
방문 하 다.
public
protected
private
동류
yes
yes
yes
파생 류
yes
yes
no
외부 클래스
yes
no
no
하나의 파생 류 는 모든 기본 적 인 방법 을 계승 하 였 으 나,아래 의 상황 은 제외한다.
4.567917.기본 클래스 의 구조 함수,석조 함수 와 복사 구조 함수4.567917.기본 클래스 의 과부하 연산 자4.567917.기본 클래스 의 우 원 함수계승 유형
하나의 클래스 가 기본 클래스 에서 파생 되면 이 기본 클래스 는 Public,proctected 또는 private 의 몇 가지 유형 으로 계승 할 수 있다.계승 유형 은 위 에서 설명 한 방문 수정자 access-specifier 를 통 해 지정 합 니 다.
저 희 는 proctected 나 private 상속 을 거의 사용 하지 않 습 니 다.보통 Public 상속 을 사용 합 니 다.서로 다른 유형의 계승 을 사용 할 때 다음 과 같은 몇 가지 규칙 을 따른다.
4.567917.공유 상속(Public):하나의 유형 이 공유 기류 에서 파생 될 때 기류 의 공유 구성원 도 파생 류 의 공유 구성원 이 고 기류 의 보호 구성원 도 파생 류 의 보호 구성원 이다.기류 의 사유 구성원 은 파생 류 에 직접 방문 할 수 없 지만 기류 의 공유 와 보호 구성원 을 호출 하여 방문 할 수 있다4.567917.보호 계승(proctected):하나의 파생 이 기 류 를 보호 할 때 기 류 의 공유 와 보호 구성원 은 파생 류 의 보호 구성원 이 될 것 이다4.567917.사유 상속(private):파생 이기 적 이 고 기본 적 인 유형 이 있 을 때 기본 적 인 공유 와 보호 구성원 은 파생 적 인 사유 구성원 이 될 것 이다.
다 상속
다 상속 즉 하나의 자 류 는 여러 개의 부 류 를 가 질 수 있 고 여러 개의 부 류 의 특성 을 계승 했다.
C++클래스 는 여러 클래스 에서 구성원 을 계승 할 수 있 습 니 다.문법 은 다음 과 같 습 니 다.

class <    >:<    1><   1>,<    2><   2>,…
{
<     >
};
그 중에서 방문 수정자 계승 방식 은 Public,proctected 또는 private 중의 하나 로 모든 기본 클래스 를 수식 하고 각 기본 클래스 간 에 쉼표 로 구분 합 니 다.위 와 같 습 니 다.지금 우리 함께 아래 의 실례 를 봅 시다.

#include <iostream>
 
using namespace std;
 
//    Shape
class Shape 
{
  public:
   void setWidth(int w)
   {
     width = w;
   }
   void setHeight(int h)
   {
     height = h;
   }
  protected:
   int width;
   int height;
};
 
//    PaintCost
class PaintCost 
{
  public:
   int getCost(int area)
   {
     return area * 70;
   }
};
 
//    
class Rectangle: public Shape, public PaintCost
{
  public:
   int getArea()
   { 
     return (width * height); 
   }
};
 
int main(void)
{
  Rectangle Rect;
  int area;
 
  Rect.setWidth(5);
  Rect.setHeight(7);
 
  area = Rect.getArea();
  
  //        
  cout << "Total area: " << Rect.getArea() << endl;
 
  //      
  cout << "Total paint cost: $" << Rect.getCost(area) << endl;
 
  return 0;
}
위의 코드 가 컴 파일 되 고 실 행 될 때 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
Total area: 35
Total paint cost: $2450
이상 은 c++상속 에 대한 상세 한 내용 입 니 다.c++상속 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

좋은 웹페이지 즐겨찾기