继承

继承:继承是指一个对象直接使用另一对象的属性和方法。(继承是一种复用手段,共享公有的东西,实现各自不同的东西

类的继承:新类(派生类/子类)从已有类(基类/父类)得到已有的特性。

理解:派生类不仅具有基类的属性,还有自己特有的属性。


继承方式和成员访问限定符 

从基类继承来的成员在派生类的访问属性是由继承方式控制的。

类的继承方式: public(公有继承) protected(保护继承)  private(私有继承)

公有继承时,基类的非私有成员在子类的访问属性都不变。

保护继承时,基类的非私有成员在子类的保护成员。

私有继承时,基类的非私有成员在子类的私有成员。

成员访问限定符也有三: public(公有) protected(保护)  private(私有)

public: 访问不受限制

protected:访问范围限定于它所属的类或该类的派生类。

private访问范围限定于它所属的类。

class Person//基类
{
public :   
	void Display ()
	{ 
		cout<<_name <<endl;
	}
protected : 
	string _name ;   // 姓名
	int age;
};
class Student : <span style="background-color: rgb(255, 204, 204);">public</span> Person //学生类继承了父类的_name和age,就不需要再次定义
{
protected : 
	int _num1 ;   // 学号 是学生类特有的属性
};
class Teacher:public Person
{
protected:
	int _num2;   //工号   是教师类特有的属性

赋值兼容规则

1. 子类对象可以赋值给父类对象 

2. 父类对象不能赋值给子类对象

 3. 父类的指针/引用可以指向子类对象 

4. 子类的指针/引用不能指向父类对

理解:子类有父类的属性,但父类不一定有子类的属性。学生一定是人,但人不一定是学生。

如果在子类定义了一个成员变量与父类相同(子类成员覆盖了父类成员/重定义),则子类将访问子类中的成员。如果我想要访问父类的成员,则 “ 基类::基类成员   ” 访问。

单继承和多继承


菱形继承

 class Person {
 public :  
   string _name ;  <span style="font-family: arial, sans-serif;"> // 姓名</span>
<span style="font-family: arial, sans-serif;"> };</span>
class Student : public Person 
{
 protected :    
 int _num ;   //学号 
};
class Teacher : public Person 
{ protected :   
  int _id ;     // 工号 };
class Assistant : public Student, public Teacher
 {
 protected :    
 string _majorCourse ;     // 主修课程
 };


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章