派生类详解

1.为什么要用派生?

       很多的时候我们需要一个类里面的成员在多个类中使用时,这种时候为了避免麻烦,程序员就想到了使用派生类。派生类是在已有类的基础上产生新的类,这个类包含了父类的已有特性,同时包含了自己的一些特性。

2.在继承时多出来的protected的使用规则

         protected声明的是保护成员,保护成员可以被本类的成员函数访问,也可以被本类的派生类的成员函数访问,而类以外的任何访问都是非法的,所以说他是半隐藏的。

3.派生类的三步工作:

(1)派生类会从基类接受所有的成员,除了构造函数和析构函数。

(2)派生类不可以选择接收的基类对象,但可以可以对基类的这些成员进行某些调整。可以通过改变继承方式可以使得原来类里面的共有成员变为私有。派生类也可以改变数据成员,在派生类中对基类的成员重新定义,定义时要用相同的变量名,这样在访问派生类中的新定义的数据时就会访问新的而不会访问基类中的,在对成员函数进行重新定义时要注意函数的参数应该相同。如果不相同就会认为派生类重载了基类的成员函数。

3.可以为派生类增加新的数据成员和成员函数来实现派生类对基类的功能的扩展。基类的构造函数和析构函数是不能被继承的,因此一般在派生类中重新定义构造和析构函数。

4.派生类不同继承的基本区别(继承方式分为共有public私有private保护protected)

(1)基类的私有成员,无论是哪一种方式的继承都无法直接继承,在派生类中永远是无法访问的。

(2)基类的公有成员,

当类的继承为公有继承时,基类中所有的公有成员在派生类中还是公有成员

当类的继承为私有继承时,基类中的所有公有成员在派生类中会是私有成员

当类的继承为保护继承时,基类中的所有公有成员在派生类中会是保护成员

(3)基类的保护成员

当类的继承为公有继承时,基类中的保护成员在派生类中还是保护成员

当类的继承为私有继承时,基类中的保护成员在派生类中会是私有成员

当类的继承为保护继承时,基类中的保护成员在派生类中还是保护成员

总结:基类的私有成员不能继承,基类的公有成员什么继承方式在派生类中就会变成什么成员,基类的保护成员在继承时只有私有继承会将基类的保护成员改变为私有,其他两种继承方式都还会是保护成员。

5.分析三种继承的访问规则:

(1)私有继承

私有继承会将基类的公有成员和保护成员在派生类中私有成员,因此作为派生类的私有成员,只能在派生类中访问而不能在类外直接通过派生类的对象访问,而私有成员不能继承到派生类中,派生类中也无法访问,只能在基类中访问。经过一次私有继承之后,基类中继承的所有成员在派生类中都会是私有的,因此想要再次进行派生,基类中全部的数据都不能在二次派生的派生类中访问。

(2)公有继承

公有继承还是一样无法继承基类的私有成员,而基类的公有成员在公有继承下还是公有成员,基类的保护成员也还是保护成员,公有成员在类内可以访问,类外的对象也可以访问。而保护成员前面提到,它是半隐藏的,除了可以继承它和私有成员一样只能在类的内部进行访问,不能通过派生类的对象进行访问。基类的私有成员在派生类中也是可以通过基类在公有成员定义的函数来间接访问。

(3)保护继承

保护继承也是无法继承私有成员,而基类的公有成员和保护成员都会在派生类中被继承为保护成员,保护成员只能在派生类中访问不能在类外通过对象访问。

总结来看,私有继承最大再是保护继承最后是公有继承,只要存在私有继承就都会所有数据继承为私有成员,再是保护继承就都会继承为保护,而公有继承因为最小所以改变不了私有成员和保护成员,所以基类的私有在派生类中还是私有成员,基类的保护成员在派生类中还是保护成员。

原创文章 6 获赞 8 访问量 111

猜你喜欢

转载自blog.csdn.net/zhchaoyue/article/details/105823057