JAVA多态

向上转型

把对某个对象的引用视为对其基类型的引用。

绑定:方法调用同方法主体关联起来。在程序执行前 由编译器和链接程序实现,叫前期绑定。面向过程的程序都是前期绑定。

在运行时,根据对象的类型进行绑定叫做动态绑定或后期绑定。

Java中除了static和final 都是后期绑定。

将方法生命为final:

1.可以防止别人覆盖方法

2.关闭动态绑定。可以生成更有效的代码。

确定Java中所有方法都是动态绑定之后,就可以编写只与基类打交道的代码了。发送消息给某个对象,让对象去判断应该做什么事。

缺陷

1.覆盖私有方法。基类的私有方法不会被覆盖。

2.域与静态方法。只有普通方法是可以多态的。直接访问数据,将在编译期间解析。静态方法是与类而非单个对象相关联的。

构造器与多态

 构造器是隐式static的,不具有多态性。

构造器的调用顺序。导出类不能访问基类中的成员。只有基类的构造器才有权限对自己的元素进行初始化。必须令所有构造器都得到调用。

1.调用基类构造器并递归。先执行最原始的基类。

2.按顺序调用成员的初始化方法。(代码测试显示,先执行创建成员,再执行构造函数。如父类中有new ,先执行new。创建了成员,本身的构造器才可能去初始化它们

3.调用导出构造器的主体。

继承与销毁

销毁的顺序应该和初始化顺序相反。首先对导出类进行清理,再清理基类。

成员存在一个或多个对象共享时,可以使用引用计数。

构造器内部的多态方法的行为

一个构造器的内部调用正在构造的某个动态绑定方法。在一般的方法内部,对象无法知道它是属于方法所在的那个类还是那个类的导出类。

导出类的构造器在调用基类的构造器时,由于多态,基类的方法会被导出类的同名方法覆盖。但是被覆盖的方法在对象没有被完全构造之前就被调用。

初始化的实际过程:

1.在其他任何事物发生前,将分配给对象的存储空间初始化成二进制的零。

2.调用基类构造器。

3.按顺序调用成员的初始化方法。

4.调用到处类的构造器主体。

原则:尽可能简单的使对象进入正常状态。避免调用使用其他方法。构造器内唯一安全调用的是基类中的final和private方法。这些方法不会被覆盖。

协变返回类型

协变返回类型允许将导出类返回给基类对象。

用继承进行设计

向上转型是安全的。而向下转型需要运行时类型识别(RTTI)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值