C++类和对象知识点整理四---继承

来源:互联网 发布:淘宝 最贵的包子 编辑:程序博客网 时间:2024/06/03 19:54
21、C++继承的概念及语法
a.继承是类与类之间的关系,是一个很简单的直观概念,与现实世界中的继承类似。


继承(lnheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。被继承的类称为父类或者是基类。继承的类称为子类或者是派生类,派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。


b.以下是2种典型的使用继承的场景
(1)当你创建的新类与现有的类相似,只是多出若干成员变量或成员函数时,可以使用继承,这样不但可以减少代码量,而且新类会拥有基类 的所有功能


(2)当你需要创建多个类,他们有用很多相似的成员变量或成员函数时,也可以使用继承,可以将这些类的共同成员提取出来,定义为基类,然后从基类继承,既可以节省代码,也可以后续修改成员


c.继承方式包括public,protected,private,此项可以不写,默认为private


1) public继承方式
基类中所有 public 成员在派生类中为 public 属性;
基类中所有 protected 成员在派生类中为 protected 属性;
基类中所有 private 成员在派生类中不能使用。


2) protected继承方式
基类中的所有 public 成员在派生类中为 protected 属性;
基类中的所有 protected 成员在派生类中为 protected 属性;
基类中的所有 private 成员在派生类中不能使用。


3) private继承方式
基类中的所有 public 成员在派生类中均为 private 属性;
基类中的所有 protected 成员在派生类中均为 private 属性;
基类中的所有 private 成员在派生类中不能使用


注意:由于private和protected继承方式会改变积累成员在派生类中的访问权限,导致继承关系复杂,所以实际开发中我们一般使用public。


不管继承方式如何,激烈中private成员在派生类中始终不能使用(不能再派生类的成员函数中访问或调用)


如果不希望基类的成员既不向外暴露(不能通过对象访问),还能在派生类中使用,那么只能声明为protected。


d.改变访问权限


使用using关键字可以改变基类成员在派生类中的访问权限,列如将public改为private,将private改为public


e.c++继承时名字遮蔽
如果派生类中的成员(包括成员变量和成员函数)和基类中的成员重名,那么就会遮蔽从基类继承过来的成员。
所谓的遮蔽,就是在派生类中使用该成员时,实际上使用的是派生类新增的成员,而不是从基类继承过来的。


如果仍要访问基类中的成员,要在前面加上类名和域解析符。


f.基类成员函数和派生类成员函数不构成重载
基类成员和派生类成员的名字一样时会造成遮蔽,这句话对于成员变量很好理解,对于成员函数要引起注意,不管函数的参数如何,只要名字一样就会造成遮蔽,换句话说,基类成员函数和派生类成员函数不会造成重载,如果派生类有同名函数,那么就会遮蔽基类中所有的同名函数,不管他们的参数是否一样。































































原创粉丝点击