面向对象之继承(读书笔记)
时间:2010-12-01 来源:woxf
重载是指同一个类中有若干个名称相同但参数不同的函数,调用函数时,系统会根据实参情况,调用参数完全匹配的那个函数。
重写是指在继承关系中,在派生类中重写由基类继承来的函数(只能是基类的虚函数)。
也即:重载函数发生在同一个类中的同名函数之间,重写函数发生在基类和派生类之间。
private与protected的区别:
private:等级最低,只能在本类中使用,不能再派生类中使用;
protected:可以也只能在派生类中使用,也就是说即使本类的实例化对象在类外也不能直接调用它;
public:可以在派生类中使用,也可以通过类的实例化对象调用。
普通函数的隐藏:
由于只能重写基类中的虚函数,而普通函数不能重写,因此要想在派生类中修改基类的普通函数,需要用NEW关键字隐藏基类中的函数。
抽象类、抽象函数、抽象属性:
当某种类是一个抽象的概念时,如脊椎动物(包括鱼类、鸟类、哺乳动物等),可以设计成抽象类(Abstract class),抽象类不能实例化为对象,只能做为派生类的基类而存在。
抽象函数是一种特殊的虚函数,它只能定义在抽象类中。抽象函数没有任何执行代码,需要在派生类中用重写的方式具体实现。
抽象属性类似于抽象函数。
密封类和密封函数:
密封类不能被继承,密封函数不能被派生类重写。
派生类的构造函数:
1、带参数的构造函数
在派生类的构造函数中,可以显示地初始化从基类继承来的public和protected成员,也可以通过基类public属性初始化基类的私有成员。
2、显示调用基类的构造函数
因为派生类不能使用基类的私有变量,所以不能通过派生类的构造函数初始化基类的私有变量,但是可以通过基类的构造函数实现,当然也可以通过显示调用基类的构造函数初始化基类的公有变量和私有变量。
因为初始化时,是从基类的构造函数开始往派生类执行,故一般情况下尽量用基类的构造函数初始化基类的成员。