上次已经为大家介绍过java中多态的意义是什么的主要内容了。今天为大家解析一下java中多态的机制,会通过实际的代码来为大家解析,一起来了解一下吧。
首先说一些,多态的机制
本质上多态分两种:
1. 编译时多态(又称静态多态)
2. 运行时多态(又称动态多态)
重载(overload)就是编译时多态的一个例子,编译时多态在编译时就已经确定,运行时运行的时候调用的是确定的方法。
我们通常所说的多态指的都是运行时多态,也就是编译时不确定究竟调用哪个具体方法,一直延迟到运行时才能确定。这也是为什么有时候多态方法又被称为延迟方法的原因。
接下来简述一下,运行时多态(以下简称多态)的机制。
多态通常有两种实现方法:
1. 子类继承父类(extends)
2. 类实现接口(implements)
无论是哪种方法,其核心之处就在于对父类方法的改写或对接口方法的实现,以取得在运行时不同的执行效果。要使用多态,在声明对象时就应该遵循一条法则:声明的总是父类类型或接口类型,创建的是实际类型。举例来说:
在定义方法参数时也通常总是应该优先使用父类类型或接口类型,例如某方法应该写成如下代码:
public void doSomething(List list);
而不是如下代码:
public void doSomething(ArrayList list);
这样声明最大的好处在于结构的灵活性:假如某一天ArrayList的特性无法满足要求,希望能够用LinkedList来代替它,那么只需要在对象创建的地方把new ArrayList()改为new LinkedList即可,其它代码一概不用改动。
同时需要注意的是,虚拟机会在执行程序时动态调用实际类的方法,它会通过一种名为动态绑定(又称延迟绑定)的机制自动实现,这个过程对程序员来说是透明的。
总体上来说,java多态的机制实现原理还是很容易理解的,可能需要花时间多了解一下,但整体上还是很简洁的。想要了解更多java基础知识,敬请关注奇Q工具网。
推荐阅读: