构造方法内的多态问题

Posted yigedingzi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造方法内的多态问题相关的知识,希望对你有一定的参考价值。

  例:A extends B

  如果A类中有一方法f(),且B类中也有方法f(),则方法f()就有多态,如果在A类的构造方法中调用f()方法,在new B() 创建B 对象的时候,在调用B的构造方法之前,会先调用A的构造方法,而A的构造方法中调用了f()方法,由于f()方法存在多态,因此,此时调用的是B类中的f()方法,由于此时B类对象还未创建,因此有可能会出现意想不到的问题,但编译器并不会报错。

  注意:构造方法的编写准则--用尽可能简单的方法使对象进入正常状态,避免在构造方法内部调用其他的方法,构造方法内唯一能够安全调用的方法是private或final方法(因为他们不存在多态)。

以上是关于构造方法内的多态问题的主要内容,如果未能解决你的问题,请参考以下文章

构造器内部的多态行为

构造器内部的多态行为

封装继承多态总结

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

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

Java 的 多态和构造方法