猿问

下列程序中age=3放在System前和后运行结果为什么不一样?按父子类初始化顺序运行结果应该是一样的才对啊?

父类程序:

package HelloWorldf;

public class HelloWorld {
public int age=20;
public String name;
public void show() {
    System.out.println("姓名:"+name+"年龄:"+age+"你有会叫的功能");
}
public HelloWorld() {
    
    System.out.println("年纪:"+age);
    age=3;
}
}

子类程序:

package HelloWorldf;

public class HelloWorldt extends HelloWorld {

}

测试程序:

package HelloWorldf;

public class test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
HelloWorldt two=new HelloWorldt();

two.name="dog";
two.show();
HelloWorld eat=new HelloWorld();

    }

}

运行结果:

年纪:20
姓名:dog年龄:3你有会叫的功能
年纪:20

油泼裤带面
浏览 1058回答 1
1回答

风中打伞的小孩

实例化子类时先调用父类构造函数,System.out.println("年纪:"+age);//因为属性变量初始值为20,所以输出年纪:20age=3; System.out.println("年纪:"+age);//此时age已经变成3,自然打印3了
随时随地看视频慕课网APP

相关分类

Java
我要回答