为了账号安全,请及时绑定邮箱和手机立即绑定

这里我要纠正一下老师的错误,在入口类测试父类和子类它们的属性和方法的执行顺序时,其实是按入口类编写代码的顺序执行的(比如在入口类把调用父类对象放在子类对象的后面),并不是老师说的先执行父类对象,然后再执行子类对象的步骤,这点学员们可以用软件去验证一下

正在回答

5 回答

sba,budongbuyaoxiashuo

0 回复 有任何疑惑可以回复我~

再来看一下构造方法的测试

这是父类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


上面的结果是不是这个意思:先执行父类的无参构造方法,接着执行子类的无参构造方法,然后执行子类对象,接着执行父类无参构造方法,最后再执行父类对象

0 回复 有任何疑惑可以回复我~

I don't think you are right.U know the parent class is prior to the son class.

0 回复 有任何疑惑可以回复我~

老师我先给你看一下普通方法的测试(这里我没测试属性):

这是父类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

0 回复 有任何疑惑可以回复我~
#1

a46

你这例子是不对的,println的输出顺序当然是按程序从上往下。你这样是看不到其内部运行方式的。在创建对象的时候构造方法就执行了。去掉println直接创建个子类对象运行下就好
2014-10-23 回复 有任何疑惑可以回复我~

这位童鞋我不知道你是怎么写的代码,你可以在父类中定义一个构造方法在该方法中打印父类中的某个属性,再在子类中定义个构造方法在该方法中打印子类中的某个属性,当你在测试类中实例化子父类的时候看看运行顺序。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信