程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++基礎知識 >> C++繼承的概念及語法

C++繼承的概念及語法

編輯:C++基礎知識
繼承是類與類之間的關系,是一個很簡單很直觀的概念,與現實世界中的繼承類似,例如兒子繼承父親的財產。

繼承(Inheritance)可以理解為一個類從另一個類獲取成員變量和成員函數的過程。例如類 B 繼承於類 A,那麼 B 就擁有 A 的成員變量和成員函數。被繼承的類稱為父類或基類,繼承的類稱為子類或派生類。

派生類除了擁有基類的成員,還可以定義自己的新成員,以增強類的功能。

以下是兩種典型的使用繼承的場景:
1) 當你創建的新類與現有的類相似,只是多出若干成員變量或成員函數時,可以使用繼承,這樣不但會減少代碼量,而且新類會擁有基類的所有功能。

2) 當你需要創建多個類,它們擁有很多相似的成員變量或成員函數時,也可以使用繼承。可以將這些類的共同成員提取出來,定義為基類,然後從基類繼承,既可以節省代碼,也方便後續修改成員。

下面我們定義一個基類 People,然後由此派生出 Student 類:
#include<iostream>
using namespace std;

//基類 Pelple
class People{
public:
    void setname(char *name);
    void setage(int age);
    char *getname();
    int getage();
private:
    char *m_name;
    int m_age;
};
void People::setname(char *name){ m_name = name; }
void People::setage(int age){ m_age = age; }
char* People::getname(){ return m_name; }
int People::getage(){ return m_age;}

//派生類 Student
class Student: public People{
public:
    void setscore(float score);
    float getscore();
private:
    float m_score;
};
void Student::setscore(float score){ m_score = score; }
float Student::getscore(){ return m_score; }

int main(){
    Student stu;
    stu.setname("小明");
    stu.setage(16);
    stu.setscore(95.5f);
    cout<<stu.getname()<<"的年齡是 "<<stu.getage()<<",成績是 "<<stu.getscore()<<endl;

    return 0;
}
運行結果:
小明的年齡是 16,成績是 95.5

本例中,People 是基類,Student 是派生類。Student 類繼承了 People 類的成員,同時還新增了自己的成員變量 score 和成員函數 setscore()、getscore()。這些繼承過來的成員,可以通過子類對象訪問,就像自己的一樣。

請認真觀察代碼第21行:

class Student: public People

這就是聲明派生類的語法。class 後面的“Student”是新聲明的派生類,冒號後面的“People”是已經存在的基類。在“People”之前有一關鍵宇 public,用來表示是公有繼承。

由此總結出繼承的一般語法為:

class 派生類名:[繼承方式] 基類名{
    派生類新增加的成員
};

繼承方式包括 public(公有的)、private(私有的)和 protected(受保護的),此項是可選的,如果不寫,那麼默認為 private。我們將在下節詳細講解這些不同的繼承方式。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved