1.C++ 類繼承
面向對象程序設計中最重要的一個概念是繼承。繼承允許我們依據(jù)另一個類來定義一個類,這使得創(chuàng)建和維護一個應用程序變得更容易。
當創(chuàng)建一個類時,您不需要重新編寫新的數(shù)據(jù)成員和成員函數(shù),只需指定新建的類繼承了一個已有的類的成員即可。這個已有的類稱為基類,新建的類稱為派生類。

image.png
2.C++ 類繼承規(guī)則
class derived-class: access-specifier base-class
- access-specifier 訪問修飾符 : public、protected 或 private 其中的一個
- base-class 是之前定義過的某個類的名稱。如果未使用訪問修飾符 access-specifier,則默認為 private。
// 基類
class Animal {
// eat() 函數(shù)
// sleep() 函數(shù)
};
//派生類
class Dog : public Animal {
// bark() 函數(shù)
};
3. 繼承類型
- 公有繼承(public):當一個類派生自公有基類時,基類的公有成員也是派生類的公有成員,基類的保護成員也是派生類的保護成員,基類的私有成員不能直接被派生類訪問,但是可以通過調(diào)用基類的公有和保護成員來訪問。
- 保護繼承(protected): 當一個類派生自保護基類時,基類的公有和保護成員將成為派生類的保護成員。
- 私有繼承(private):當一個類派生自私有基類時,基類的公有和保護成員將成為派生類的私有成員。
4. 具體實現(xiàn)
4.1 定義頭文件Aminal.h
#ifndef AMINAL_H
#define AMINAL_H
#include <iostream>
using namespace std;
class Aminal
{
private:
int age;
protected:
string sex;
/* data */
public:
Aminal(/* args */);
~Aminal();
void setAge(int ae);
int getAge();
void setSex(string sx);
string getSex();
};
#endif
4.2 頭文件實現(xiàn)Aminal.cpp
#include <iostream>
#include "Aminal.h"
using namespace std;
Aminal::Aminal(/* args */)
{
}
Aminal::~Aminal()
{
}
void Aminal::setAge(int ae)
{
age = ae;
}
int Aminal::getAge()
{
return age;
}
void Aminal::setSex(string se)
{
sex = se;
}
string Aminal::getSex()
{
return sex;
}
4.3 Main.cpp 調(diào)用 Aminal.h
#include <iostream>
#include <Aminal.h>
using namespace std;
class Dog: public Aminal{
public:
string getAgeAndSex()
{
auto a = getAge();
return sex+"-"+ to_string(a);
}
};
// 執(zhí)行
int main() {
Dog dg;
dg.setAge(18);
dg.setSex("男");
cout<< "拿到值:"<<dg.getAgeAndSex()<<endl;
return 0;
}
總結:繼承類可以使用基類中的變量和函數(shù),具體使用哪個根據(jù)你使用的繼承類型有關