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.基类成员函数和派生类成员函数不构成重载
基类成员和派生类成员的名字一样时会造成遮蔽,这句话对于成员变量很好理解,对于成员函数要引起注意,不管函数的参数如何,只要名字一样就会造成遮蔽,换句话说,基类成员函数和派生类成员函数不会造成重载,如果派生类有同名函数,那么就会遮蔽基类中所有的同名函数,不管他们的参数是否一样。
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.基类成员函数和派生类成员函数不构成重载
基类成员和派生类成员的名字一样时会造成遮蔽,这句话对于成员变量很好理解,对于成员函数要引起注意,不管函数的参数如何,只要名字一样就会造成遮蔽,换句话说,基类成员函数和派生类成员函数不会造成重载,如果派生类有同名函数,那么就会遮蔽基类中所有的同名函数,不管他们的参数是否一样。
阅读全文
0 0
- C++类和对象知识点整理四---继承
- C++类和对象知识点整理六-----多继承
- C++类和对象知识点整理七----虚基类和虚继承
- C++类和对象知识点整理
- C++类和对象知识点整理一
- C++类和对象知识点整理二
- C++类和对象知识点整理三
- linux c/c++知识点整理(四)
- PHP的类和对象(四)访问控制和继承
- Object-C知识点 (四)NSObject的继承关系
- 笔记整理(java基础四-----面向对象---继承)
- 笔记整理(java基础四-----面向对象---继承)
- 前端重点知识整理(JavaScript)四:对象及继承
- C++--之四(类和对象)
- Java知识点整理:第五章:类的声明,构造方法,方法,继承中的构造器,对象实例化过程
- 面向对象知识点整理
- 面向对象知识点整理
- 【C++】第10章 对象和类 知识点总结
- 上弹模态框
- Maven的war包
- ItemTouchHelper实现RecylerView的拖拽以及滑动删除功能
- shell脚本中/dev/null 2>&1详解
- 头布局
- C++类和对象知识点整理四---继承
- uml类图中的具体关系
- 了解 Spring Boot AutoConfiguration
- Android Permission check的一点认知更新
- 微信支付jsapi问号传参的问题
- POJ 1182
- SpringMVC+mybaits+mysql实现简单的登录注册
- 深入浅出数据结构C语言版(15)——优先队列(堆)
- Python|计蒜客——函数规律