目录 :
1.引出继承的概念
2.继承的关系和方式
3.继承中的作用域
------------------------------------------------------------------------------------------------------------------------------
1.引出继承的概念
这些学生、老师、后勤都具有相同的特征,我们可以把这些相同的特征提取出来放到一个公共的类当中
那么我该如何让Personz这个公共的类当中的数据和方法给我们其它类用呢???
这就需要学习我们今天类的继承
继承的概念 : 继承机制是面向对象程序设计使代码可以复用的只要手段,它允许程序员在保持原有类的特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承是类设计层次的复用
2.继承的关系和方式
下面我们看到Person是父类也称基类,student是子类也称派生类
那么我们的继承是如何体现出复用的呢???
我们可以先开简单的看看
继承关系和访问限定符
继承方式:
继承基类成员访问方式的变化
以上的继承方式中我们只需要学public继承即可(最有用的)
我们来简单看一下public继承方式
总结:
1.基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中,但是在语法上限制派生类对象不管在类里面还是类外面都不能去访问它
私有成员的意义 : 不想被子类继承的成员,可以设计称私有
2.基类的私有成员在子类都是不可见,基类的其它成员在子类的访问方式=Min(成员在基类的访问限定符 , 继承方式) public > protected > private
3.使用关键字class时默认的继承方式是private,使用struct时默认的继承方式是public,不过最好 还是显示的写出继承方式
4.在实际运用中一般都是使用public继承,几乎很少使用protected / private继承
基类中想给子类复用,但是又不想暴露直接访问的成员,就应该定义成保护protected!!!
--------------------------------------------------------------------------------------------------------------------------------
3.继承中的作用域
我们之前说的在同一个域中能不能同时定义一个变量 -----当然是不能的
但是同一个域可以定义同名的函数,但是要求参数不同,要求构成函数重载
这里是可以的 --- 同一个域不能定义同一个变量,但是这里是不同的域,父类和子类是独立的作用域(全局域和局部域可以定义同一个变量)
那么现在子类当中有两个 _name ,子类当中自己有一个并且还继承了父亲当中的一个_name
那么我们子类当中访问_name ,访问的子类自己的_name(局部优先原则)
我们可以通过指定作用域来优先访问我们的父类中的成员
----------------------------------------------------------------------------------------------------------------------------
两个fun构成函数重载?? -- 不对,函数重载要求在同一作用域
两个fun构成隐藏关系(只要两个函数名或者变量名相同就构成了隐藏)