这里我要纠正一下老师的错误,在入口类测试父类和子类它们的属性和方法的执行顺序时,其实是按入口类编写代码的顺序执行的(比如在入口类把调用父类对象放在子类对象的后面),并不是老师说的先执行父类对象,然后再执行子类对象的步骤,这点学员们可以用软件去验证一下
2014-10-22
5 回答
再来看一下构造方法的测试
这是父类a
public class a {
protected int age=10;
public a(){
System.out.println("a执行了");
}
}
这是子类c
public class c extends a {
public c(){
System.out.println("c执行了");
}
}
这是入口类d
public class d {
public static void main(String[] args) {
c b=new c();
System.out.println("c执行了:"+b.age);
a ab=new a();
System.out.println("a执行了:"+ab.age);
}
}
输出结果:
a执行了
c执行了
c执行了:10
a执行了
a执行了:10
上面的结果是不是这个意思:先执行父类的无参构造方法,接着执行子类的无参构造方法,然后执行子类对象,接着执行父类无参构造方法,最后再执行父类对象
老师我先给你看一下普通方法的测试(这里我没测试属性):
这是父类a
public class a {
protected int age=10;
public void e(){
System.out.println("a执行了");
}
}
这是子类c
public class c extends a {
public void r(){
System.out.println("c执行了");
}
}
这是入口类d
public class d {
public static void main(String[] args) {
c b=new c();
System.out.println("c执行了:"+b.age);
a ab=new a();
System.out.println("a执行了:"+ab.age);
}
}
输出结果:
c执行了:10
a执行了:10
举报