C++深入探究继承的概念与使用
什么是继承?
继承是面向对象编程中的一个核心概念,它提供了一种在已有类的基础上构建新类的方式。继承是指子类从父类中继承成员变量和成员函数,并且可以在此基础上扩展出自己独有的属性和行为。继承有三种类型:公有继承、私有继承和保护继承。
公有继承
公有继承指的是子类从父类中继承了父类的公有成员和保护成员,并把这些成员都变成了子类的公有成员或保护成员。
例如,我们定义了一个基类 People
,有一个公有成员函数 int getAge()
和一个私有成员变量 int age
。现在定义一个子类 Student
,它从 People
类中公有继承了 getAge
函数和 age
变量,我们可以在 Student
类中直接使用这些成员。
下面是示例代码:
class People {
public:
int getAge() { return age; };
protected:
int age;
};
class Student : public People {
public:
void setScore(int s) { score = s; };
private:
int score;
};
int main() {
Student s;
s.setScore(90);
int age = s.getAge();
return 0;
}
在上面的例子中,Student
类从 People
类中公有继承了 getAge
函数和 age
变量,并可以在 Student
类中使用这些成员。
私有继承
私有继承指的是子类从父类中继承了父类的公有成员和保护成员,并把这些成员都变成了子类的私有成员。
例如,我们仍然定义了一个基类 People
,有一个公有成员函数 int getAge()
和一个私有成员变量 int age
。现在定义一个子类 Student
,它从 People
类中私有继承了 getAge
函数和 age
变量,我们可以在 Student
类内部使用这些成员,但是在 Student
类的外部是无法直接访问的。
下面是示例代码:
class People {
public:
int getAge() { return age; };
protected:
int age;
};
class Student : private People { // 私有继承
public:
void setScore(int s) { score = s; };
int getAge() { return People::getAge(); }; // 通过方法获取年龄
private:
int score;
};
int main() {
Student s;
s.setScore(90);
int age = s.getAge(); // 通过方法获取年龄
return 0;
}
在上面的例子中,Student
类从 People
类中私有继承了 getAge
函数和 age
变量,并可以在 Student
类内部使用这些成员,但是在 Student
类的外部是无法直接访问的。
保护继承
保护继承与私有继承类似,不同的是从父类中继承的成员变量和成员函数变成了子类的保护成员。
例如,我们仍然定义了一个基类 People
,有一个公有成员函数 int getAge()
和一个私有成员变量 int age
。现在定义一个子类 Student
,它从 People
类中保护继承了 getAge
函数和 age
变量,我们可以在 Student
类内部使用这些成员,也可以在子类的派生类中使用这些成员。
下面是示例代码:
class People {
public:
int getAge() { return age; };
protected:
int age;
};
class Student : protected People { // 保护继承
public:
void setScore(int s) { score = s; };
int getAge() { return People::getAge(); }; // 通过方法获取年龄
private:
int score;
};
class Graduate : public Student { // Graduate 是 Student 的派生类
public:
void setDegree(char *d) { degree = d; };
char *getDegree() { return degree; };
private:
char *degree;
};
int main() {
Graduate g;
g.setScore(90);
g.setDegree("Master");
int age = g.getAge(); // 通过方法获取年龄
char *degree = g.getDegree();
return 0;
}
在上面的例子中,Student
类从 People
类中保护继承了 getAge
函数和 age
变量,并可以在 Student
类内部使用这些成员,也可以在子类的派生类 Graduate
中使用这些成员。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++深入探究继承的概念与使用 - Python技术站