面向对象的三个基本特征,并简单论述之
封装:将客观事物抽象成类,每个类对自身的数据和措施实行 protection(private, protected,public)2
继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和措施而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和措施,实现滞后到子类实现)
前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式
多态:是将父对象设置成为和一种或更多的他的子对象相等的技术,赋值之后,父对象就可以根据目前赋值给它的子对象的特性以不一样的方式运作
简单的说,就是一句话:容许将子类类型的指针赋值给父类类型的指针
重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别
从定义上来说:重载:是指容许存在多种同名函数,而这些函数的参数表不一样(或许参数个数不一样,或许参数类型不一样,或许两者都不一样)
重写:是指子类重新定义复类虚函数的措施
从实现原理上来说:重载:编译器根据函数不一样的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不一样的函数(至少对于编译器来说是这样的)
如,有两个同名函数:function func(p:integer):integer;和 function func(p:string):integer;
那么编译器做过修饰后的函数名称也许是这样的:int_func、str_func
对于这两个函数的调用,在编译器间就已经确定了,是静态的
也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关
重写:和多态真正有关
当子类重新定义了父类的虚函数后,父类指针根据赋给它的不一样的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的