Blueherb In solitude, where we are least alone

构造方法内的多态问题

  例:A extends B

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

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

posted @ 2018-12-19 16:05  一个钉子  阅读(247)  评论(0编辑  收藏  举报