目录
一:继承的格式与三种不同继承方式
1.1:继承格式
继承的基本格式 class (子类名称):(继承方式)(父类名称)
继承方式分为:1:公共继承(public)2:保护继承(protected)3:私有继承(private)
1.2:公共继承。
我们通常会说,父类中的私有属性不能被子类继承,子类只能继承父类的公共属性和保护属性。但是我们通过下面的案例可以看到,子类继承父类后,使用sizeof计算子类的空间大小时,得到的结果是12字节,所以本质上来说,其实子类会将父类的所有成员属性全部继承下来,只不过父类的私有属性,子类对象是访问不到的。
下面我们通过实例化一个son1类对象来深入了解一下公共继承
可以看到,公共继承下来的子类对象,不能在类外直接访问成员属性b的,因为b在父类中声明时是属于保护权限下的(可以在类内或者通过友元访问,但是在类外不能访问)。 但是对于父类中属于公共权限下的a,子类对象是可以直接在类外访问的。
这就说明,在使用公共继承后,父类中的公共属性,在子类中也属于公共属性,父类中的保护属性,在子类中也属于保护属性。
1.3:保护继承和私有继承
其实这两种继承方式与公共继承是完全相同的,他们也都会将父类中的所有属性全部继承下来。他们的区别在于,继承下来后,父类中的成员属性在子类中会根据继承方式不同而不同
三种继承的示意图
对于公共继承,我们在上面已经说明过了。
那么对于保护继承来说,子类保护继承于父类后,会将父类中的公共属性与保护属性下的数据都继承到他自己的保护权限下。
对于私有继承来说:子类会将父类中所有的属性全都继承到子类的私有权限下。
当然大多数情况下使用的都是公共继承。
二:继承作用(简单继承案例)
作用:继承所表达的是不同类之间的关系,这种关系使得对象可以继承另外一个类对象的特征与能力。主要作用就是避免公用代码的重复开发,减少代码和数据的重复性。
下面我们通过一个简单案例来了解一下继承的作用。
2.1:继承的简单案例:
我们构建一个学生类,和一个老师类
可以看到,这两个类中出现了许多的重复代码,(数据类型一样,表达的含义也相似)。对于这种情况,使用继承就可以很好的解决代码重复性开发问题。
2.2:解决方法:
我们可以从这两个类中,提取出他们的公共属性,构造一个新的基础类,然后让这两个类继承这个基础类就可以了。
1.3:案例测试:
我们让老师类公有继承了这个基础类后,直接实例化一个老师类的对象,可以看到,他里面也出现了基础类中的所有公共属性。(可我们在老师类中,并没有去创造这些属性)。这就是继承的作用。