是初始化问题吗,急,请帮忙解决? this的问题你加注释之前,它输出的是Glyph的radius去掉注释以后,Glyph没有radius了,输出的是RoundGlyph的radius如果要保证两次输出都一致的话,使用this.radius 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 奇怪,我无论是否注释都得到同样的结果Glyph() before draw()RoundGlyph.draw(),radius= 0Glyph() after draw()RoundGlyph.RoundGlyph(),radius= 6你的Glyph() before draw()RoundGlyph.draw(),radius= 2Glyph() after draw()RoundGlyph.RoundGlyph(),radius= 6是这么得到的? 同意“见到PLMM脸就红”他们的结果是一致的!不过我现在不明白在抽象类中貂调用抽象方法会有什么结果?或者说他们的具体到底调用的是那个类的方法。 明白你的意思了,我刚才没注释RoundGlyph 类里面的radius注释掉以后结果是你那样的 ?a?ú3?ê??ˉ?3DòóD1??£°?×óàà?Dμ?×??????a static£??í?éò?á?abstract class Glyph{// int radius=2;//????×¢êí abstract void draw(); Glyph(){ System.out.println("Glyph() before draw()"); draw(); System.out.println("Glyph() after draw()"); } } class RoundGlyph extends Glyph{ public static int radius=1; RoundGlyph(int r){ super();// draw(); System.out.println("radius = "+radius); 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(6); }}ê?3??á1??a£oGlyph() before draw()RoundGlyph.draw(),radius= 1Glyph() after draw()radius = 1RoundGlyph.RoundGlyph(),radius= 6?1???êò???£?????òaê2?′?á1?£?
Glyph() before draw()
RoundGlyph.draw(),radius= 0
Glyph() after draw()
RoundGlyph.RoundGlyph(),radius= 6
你的
Glyph() before draw()RoundGlyph.draw(),radius= 2Glyph() after draw()RoundGlyph.RoundGlyph(),radius= 6
是这么得到的?
// int radius=2;//????×¢êí
abstract void draw();
Glyph(){
System.out.println("Glyph() before draw()");
draw();
System.out.println("Glyph() after draw()");
}
} class RoundGlyph extends Glyph{
public static int radius=1;
RoundGlyph(int r){
super();
// draw();
System.out.println("radius = "+radius);
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(6);
}
}ê?3??á1??a£o
Glyph() before draw()
RoundGlyph.draw(),radius= 1
Glyph() after draw()
radius = 1
RoundGlyph.RoundGlyph(),radius= 6?1???êò???£?????òaê2?′?á1?£?