c++의 계승 관계

5121 단어 c + +이어받다
1 상속 이란 무엇 인가
계승 개념
계승(inheritance)체 제 는 대상 프로그램 을 대상 으로 코드 를 재 활용 할 수 있 도록 설계 하 는 가장 중요 한 수단 으로 프로그래머 가 기 존의 특성 을 유지 하 는 토대 에서 확장 하고 기능 을 추가 할 수 있 도록 한다.이렇게 새로운 종 류 를 만들어 파생 류 라 고 한다.계승 은 대상 을 대상 으로 하 는 프로그램 디자인 의 차원 구 조 를 나타 내 고 간단 한 것 에서 복잡 한 인지 과정 을 나 타 냈 다.
대상 을 향 한 상속 관 계 는 부류 간 의 부자 관 계 를 가리킨다.아 날로 그 로 다음 과 같이 표시 합 니 다.

2.왜 상속 이 있어 야 합 니까?계승의 의미?
계승 은 대상 에서 코드 를 재 활용 하 는 수단 이기 때문이다.계승 을 통 해 부모 클래스 의 모든 기능 을 얻 을 수 있 고,하위 클래스 에서 부모 클래스 의 기 존 기능 을 다시 쓰 거나 부모 클래스 에 없 는 기능 을 추가 할 수 있 습 니 다.
3.자 류 는 특수 한 부류 라 는 것 을 어떻게 이해 합 니까?
하위 클래스 는 부모 클래스 의 모든 속성 과 행 위 를 계승 할 뿐만 아니 라 하위 클래스 에서 부모 클래스 의 기 존 기능 을 다시 쓰 고 자신의 새로운 속성 과 새로운 방법 을 추가 할 수 있 기 때문이다.하위 대상 을 부모 대상 으로 사용 할 수 있다 는 얘 기다.
4 계승의 법칙
1)자 류 는 특수 한 부류 이다
2)하위 클래스 대상 은 부모 클래스 대상 을 직접 초기 화 할 수 있다.
3)하위 클래스 대상 은 부모 클래스 대상 에 게 직접 값 을 부여 할 수 있다.
5.계승 중인 방문 단계
1)Public:클래스 의 내부 와 외부 에서 접근 할 수 있 습 니 다.
2)protected::클래스 내부 에서 사용 할 수 있 으 며,클래스 외부 에서 직접 사용 할 수 없습니다.그러나 상속 관계 가 있 을 때 하위 클래스 에서 부모 클래스 의 proctected 멤버 를 사용 할 수 있다.
3)private:클래스 내부 에서 만 사용 할 수 있 으 며 클래스 외부 에서 사용 할 수 없습니다.
주:클래스 의 내부:현재 클래스 의 역할 영역 에서(하위 클래스 의 역할 영역 은 포함 되 지 않 음);클래스 의 외부:클래스 내부 이외 의 역할 영역(하위 클래스 의 역할 영역 포함)
문제 1:하위 클래스 는 부모 클래스 의 private 멤버(비공 유 멤버)를 직접 방문 할 수 있 습 니까?(No)
1)대상 이론 에 대한 측면 에서 분석 한 결과 자 류 는 부류 의 모든 속성 과 행 위 를 가지 고 있 음 을 알 수 있다.결론:Yes
2)c++의 문법 적 측면 에서 분석 하면 외부 에서 접근 할 수 없 는 private 구성원 을 알 수 있 고 결론:No
문제 2:proctected 키워드 의 존재 의 미 를 말 해 볼 까?
proctected 키 워드 는 계승 을 위해 존재 합 니 다.그러면 하위 클래스 에서 부모 클래스 의 proctected 구성원 을 방문 할 수 있 고 외부 에서 부모 클래스 의 proctected 구성원 을 직접 방문 하 는 것 도 허용 하지 않 습 니 다.
문제 3:클래스 에서 클래스 의 방문 단 계 를 어떻게 선택 합 니까?다음 그림 을 보시오

6 상속 중의 상속 방식
1)Public 계승 방식-부모 구성원 은 하위 클래스 에서 기 존의 방문 단 계 를 유지 합 니 다.
2)proctected 상속 방식-아버지 류 중의 공유 구성원 은 하위 클래스 에서 proctected 구성원 이 되 었 고 다른 것 은 변 하지 않 는 다.
3)private 상속 방식(기본 값)-부모 구성원 이 하위 클래스 에서 private 구성원 이 되 었 습 니 다.
귀납 할 수 있 는 것 은:

결론:어떤 계승 방식 을 선택 하 든 하위 클래스 가 부모 구성원 을 방문 하 는 등급 에 영향 을 주지 않 는 다.
주:1)c++프로젝트 에 서 는 Public 계승 방식 만 사용 합 니 다.
2)c++파생 언어(jave,c\#)는 Public 계승 방식 만 지원 합 니 다.
3)proctected,private 상속 방식 이 가 져 온 복잡성 은 실용성 보다 훨씬 크다.(버 리 고 쓰 지 않다
코드 로 아 날로 그 기능 구현:

코드 는 다음 과 같 습 니 다:

 #include <iostream>
  #include <string>
  #include <sstream>
  
  using namespace std;
  
 class Object
  {
  protected:
     string mName;
     string mInfo;
 public:
     Object()
     {
         mName = "Object";
         mInfo = "";
     }
     inline string getName()
     {
         return mName;
     }
     inline string getInfo()
     {
         return mInfo;
     }
 };
 
 class Point : public Object
 {
 private:
     int mX;
     int mY;
 public:
     Point(int x = 0, int y = 0)
     {
         ostringstream oss;
 
         mX = x;
         mY = y;
         mName = "Point";
         
         oss << "Point(" << mX << ", " << mY << ")";
         mInfo = oss.str();
     }
     inline int getX()
     {
         return mX;
     }
     inline int getY()
     {
         return mY;
     }
 };
 
 class Line : public Object
 {
 private:
     Point mP1;
     Point mP2;
 public:
     Line(Point p1, Point p2)
     {
         mP1 = p1;
         mP2 = p2;
         mName = "Line"; 
         mInfo = "Line from " + p1.getInfo() + " to " + p2.getInfo();
     }
     inline Point getStartPoint()
     {
         return mP1;
     }
     inline Point getEndPoint()
     {
         return mP2;
     }
 };
 
 int main(int argc, char const *argv[])
 {
     Object obj;
     cout << obj.getName() << endl;
     cout << obj.getInfo() << endl << endl;
 
     Point p1(1, 2);
     Point p2(3, 4);
     cout << p1.getName() << endl;
     cout << p1.getInfo() << endl;
     cout << p2.getName() << endl;
     cout << p2.getInfo() << endl << endl;
 
     Line line(p1, p2);
     cout << line.getName() << endl;
     cout << line.getInfo() << endl << endl;
 
     return 0;
 }
c++의 상속 관계 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 c++상속 관계 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기