jiang_liu_ 2016-08-17 06:02 采纳率: 100%
浏览 1715
已采纳

关于java对象实例化的一些顺序过程

package myTest;

abstract class Glyph {
abstract void draw();

Glyph() {
    System.out.println("Glyph() before draw()");
    draw();
    System.out.println("Glyph() after draw()");
}

}

class RoundGlyph extends Glyph {
int radius = 1;

RoundGlyph(int r) {
    radius = r;
    System.out.println("RoundGlyph.RoundGlyph(), radius = " + radius);
}

void draw() {
    System.out.println("RoundGlyph.draw(), radius = " + radius);
}

}

public class PolyConstructors {
public static void main(String[] args) {
new RoundGlyph(5);
}
}

这个是thinking in java书上的一个例子,解释并没有看的很懂,这里实例化了一个Roundlyph对象,会先调用父类构造器,当调用父类构造器的时候执行了覆盖的draw方法,但是此时父类没有radius,所以没有初始化这个值,但是子类成员的初始化还没有开始,所以这个时候radius应该是都没生命的啊,为什么还会输出0.
只有11c币,全身家当了

  • 写回答

8条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 和您碰到了同一个问题
      • ¥15 如何在微信支付V3PHP版请求中添加header?
      • ¥15 在数字信号处理中用MATLAB显示波形。
      • ¥15 keil MDK软件进行仿真调试的局限
      • ¥15 关于gateway产生临时文件夹的问题
      • ¥15 Java Broken Pipe以及OOM
      • ¥20 请问有没有RTL8211FS的参考原理图
      • ¥50 esp32的platfromio工程添加文件就会编译失败
      • ¥15 linux下运行VASP报错
      • ¥15 python里面查找赋值,如何可以在剩余未空值的行里面进行进一步的筛选呢?