/** * Created by Administrator on 2017/3/7. */ /** * @author zhenghong * @date 2017-03-07-21:21 **/public class TestC { public static void main(String []args) { new Graph(5); }}class Grp{ void draw() { System.out.println("draw...."); } Grp() { draw(); }}class Graph extends Grp{ private int radius = 2; Graph(int radius){ this.radius = radius;} @Override void draw() { System.out.println("draw.."+radius); }} 结果 draw...0初始化Graph ,先初始化父类,父类构造方法中有一个重载的方法,然后调用子类的draw()方法,打印出的结果为draw..0,因为此时子类radius尚未初始化。Thinking in java 299页编写构造器的准则 用尽可能简单的方法使对象进入正常状态,如果可以的话,避免调用其他的方法。在构造器中唯一能安全调用的方法是基类中的final方法。(也适用于private方法,它们自动属于final方法)
时间: 2024-12-18 19:27:35