多态 polymorphism

多态 polymorphism
多态提供了借口与实现分离的另一个重要性,能将是什么what从how怎么做之中抽离。改善程序的组织架构和可读性,更能开发出可扩充性的程序。
封装encapsulation通过将特征characteristics与行为behavior结合在一起而产生新的类别
实现隐藏implementation hidden则通过将细节details设为private而分离出接口interface和实现implementation。

Method call binding函数调用绑定方式
Early binding 先期绑定:绑定动作发生于程序执行前
late binding 后期绑定:绑定动作将在执行期才根据对象类别而进行。runtime binding,dynamic binding
Java的所有函数,除了final的以外,都使用后期绑定。

覆写overriding VS. 重载overloaing
overriding 接口的属性列表不变
overloading 函数的属性列表不同

Abstract class 与 Abstract method

抽象类提供了相同的接口

抽象方法 语法:
abstract void function();
含有抽象方法的类,称为抽象类。如果一个类含有一个或多个abstract method,需要使用abstract作为class的修饰
不含抽象方法的类也可以使用abstract修饰,该类则不能产生实体。

abstract class 和 abstract method很实用,他们可以明确类的抽象性质,并告诉使用者和编译器它所设想的使用方式。

构建函数的调用顺序:
1 呼叫base class构建函数(在派生类构建函数,初始语句中可以访问父类)
2 根据各成员的定义顺序,呼叫其初始设定式(派生类构建函数中可以访问)
3 呼叫派生类的构建函数本体。

finalize()
使用组合生成的类,不需要关心她的成员对象的终止问题。每个成员都是独立物件。
派生类如果有特殊的清理动作在垃圾回收时进行,则必须覆写finalize(),且在其中要呼叫父类的finalize()。否则父类的终止动作不会发生。

对象的终止顺序和生成顺序相同,但技术上讲,对象的终止顺序是没有规范的。但通过父类,可以控制终止顺序。
先执行派生类的终止式,然后再执行父类的终止式。因为派生类的终止动作可能呼叫父类的函数


polymorphic method在构建函数中的行为
在任何构建函数中,整个对象可能仅有部分被形成,只能确认base class已经形成,但无法知道哪些类继承自此类,一个动态链接的函数调用可能会在继承体系中向外发散,它会呼叫到派生类的函数,可能会访问一些未被初始化的变量。

在构建函数中,尽可能简单的让对象进入正确状态,如果可以的话不要调用函数,唯一可以调用的是父类的final函数(private也可以,它们天生是final的)。它们不会被覆写。

请以继承表达行为上的差异,以成员变量表达状态上的变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值