原文

​ java 多态,个人理解为一个类的接口,多种不同的实现方式。
通过这一个类(基类),对其进行继承,然后基类里面的某一个方法(或指接口),在子类内部进行重写,然后在进行调用,实际实现者为子类,但是调用这个方法的为基类的方法。这是多态的一种实现方式。

​ 多态:一个接口,多个实现。
个人理解:我们目前有一些网红,这些网红都是伴随着信息社会的产物,从宏观意义上讲,我们这些网红都是一样的,这就是一个接口,但是从微观意义上讲,每一个网红都不一样,网红之间存在着非常大的差异,当我们调用网红的时候,我们会得到很多种的不同的网红,这就是多个实现。

​ Java 中存在的机制,让我们对于想要调用的某个实现,我们只需要使用这个接口,Java会自行根据当前接口对应的实例,去实现这一个过程或者目的。

​ 对于调用构造器内部的一个动态绑定方法,用到的是方法被覆盖后的定义。Java都是通过动态绑定实现多态。一个静态方法不具有多态性,只有普通方法调用是可以多态的。

补充

​ 对于多态,Java中非常重要的一个处理是对于大多数方法使用了运行时绑定(后期绑定、动态绑定),所以在运行时能够根据方法调用绑定类型信息,进行向上转型。存在特殊的方法类型是static方法和final方法,Private方法默认为final方法。
对域进行的绑定是编译器解析,也不能够进行动态绑定。

构造器的多态

​ 在构造器内部如果有使用多态的方法的话,会造成导出类使用覆盖方法的定义。所以尽可能简单的让对象进入正常状态,避免调用其他方法,在构造器内唯一能够安全调用的方法是基类的final方法。

Java的转型

​ 在多态中,Java进行了向上转型:在继承结构上向上移动,例如一个三角形类会转型成为图形类,这种转型是可以默认执行的,即在任何条件下都能执行,同样,因为Java内所有的类都继承自Object,所以所有类都可以转型成为Object类。但是执行向上转型会丢失类的类型信息。
同样的还有向下转型:在继承树上向下移动,向下转型会用在已经使用过向上转型丢失了类型信息的类,即将从三角形类转换为图形类的类转回三角形类。具体方法类似于强制转换,在需要转换的类前Object b =(Object)a:将转换后的类重新引用。

协变返回类型

​ 这个概念的解释在《Think in Java》一书中是这样的:协变返回类型表示在导出类中的被覆盖方法可以返回基类方法返回的某种类型的某种导出类型。这句话的大概意思是A继承B,C继承D,C的方法返回A,现在D的覆盖C的方法可以返回B,这是在Java SE5中的一个更新。

查看更多

Java基础:Java基础