摘要:在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。
在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。
1.再论向上转型多态作用:消除类型之间的耦合关系.
2.转机绑定:将一个方法调用同一个方法主体关联起来.
前期绑定:在程序执行前就进行绑定(面向过程语言默认绑定方式).
后期绑定:也叫动态绑定或运行时绑定,在运行时根据对象的类型进行绑定.
Java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是后期绑定.
只有普通的方法调用可以是多态的(任何域访问操作都将由编译器解析,因此不是多态的).
如果某个方法是静态的,它的行为就不具有多态性(静态方法是与类,而非与单个的对象相关联的).
3.构造器和多态构造器并不具有多态性(隐式声明的static方法).
构造器的调用顺序:1.调用基类构造器,反复递归;2.按声明顺序调用成员的初始化方法;3.调用导出类构造器 的主体.
构造器的调用顺序是很重要的.再构造器内部,必须确保所要使用的成员都已经构建完毕.
通过组合和继承方法来创建新类时,永远不必担心对象的清理问题,子对象通常都会留给垃圾回收器进行处理.
对象销毁的顺序应该和初始化顺序(声明顺序,初始化时按照声明顺序进行的)相反.
对于基类,应该首先对其导出类进行清理,然后才是基类.
成员对象中存在于其他一个或多个对象共享的情况,需要使用"引用计数"来跟踪仍旧访问者共享的对象数量.
初始化的实际过程:1.在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的零;2.调用基类构造器;3.按照声明的顺序调用成员的初始化方法;4.调用导出类的构造器主体.
准则:用尽可能简单的方法使对象进入正常状态;如果可以的话,避免调用其它方法.
在构造器内部唯一能够安全调用的方法是基类中的final方法(也适用于private方法),因为这些方法不能被覆盖.
4.协变返回类型Java SE5中添加了协变返回类型,它表示在导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型.
5.用继承进行设计不能在运行期间决定继承不同的对象,因为它要求在便宜期间完全确定下来.
准则:用继承表达行为间的差异,并用字段表达状态上的变化.
纯继承:"is-a",扩展:"is-like-a".
扩展缺点:导出类中接口的扩展部分不能被基类访问,因此,一旦使用向上转型,就不能调用那些新方法.
向下转型(cast):在继承层次中向下移动,能够获取类型信息.
Java中所有转型都会得到检查.
END
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71557.html
摘要:多态的作用是消除类型之间的耦合关系。编写构造器准则用尽可能简单的方法使对象进入正常状态,如果可以的话,避免调用其他方法。 点击进入我的博客 在面向对象的程序设计语言中,多态是继数据抽象(封装)和继承之后的第三种基本特征。多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。多态的作用是消除类型之间的耦合关系。 8.1 再论向上转型 对象既可以作为它自己的本类使用,也可以作为它的...
摘要:为什么不是面向对象不是面向对象,因为它包含个原始数据类型,例如。自定义类加载器继承的自定义类加载器。可以像下面这样指定参数面试题面向对象,类加载器,基础概念它们的关系如下启动类加载器,实现,没有父类。自定义类加载器,父类加载器为。 1. 为什么说Java是一门平台无关语言? 平台无关实际的含义是一次编写到处运行。Java 能够做到是因为它的字节码(byte code)可以运行在任何操作...
摘要:为什么不是面向对象不是面向对象,因为它包含个原始数据类型,例如。自定义类加载器继承的自定义类加载器。可以像下面这样指定参数面试题面向对象,类加载器,基础概念它们的关系如下启动类加载器,实现,没有父类。自定义类加载器,父类加载器为。 1. 为什么说Java是一门平台无关语言? 平台无关实际的含义是一次编写到处运行。Java 能够做到是因为它的字节码(byte code)可以运行在任何操作...
阅读 1026·2021-11-22 15:33
阅读 3310·2021-11-08 13:20
阅读 1287·2021-09-22 10:55
阅读 2013·2019-08-29 11:08
阅读 729·2019-08-26 12:24
阅读 3019·2019-08-23 17:15
阅读 2156·2019-08-23 16:12
阅读 1886·2019-08-23 16:09