Java中new一个对象时 执行顺序的探析


Java代码

package tool;

class Base {

    private String name = "base";

    public Base() { //  2. new Base对象
        tellName(); //  3. 执行tellName()方法 是在继承的类中重写了该方法 所以去继承的类中去执行
        printName(); // 5. 执行printName()方法 是在继承的类中重写了该方法 所以去继承的类中去执行
    } // 7. new Base对象结束后,返回继承的类中 再去加载他类中的变量

    public void tellName() {
        System.out.println("Base tell name: " + name);
    }

    public void printName() {
        System.out.println("Base print name: " + name);
    }
}

/**
 * 测试new一个对象的执行顺序
 * @author wangtengfei-ds
 *
 */
public class Dervied extends Base {

    private String name = "dervied"; // 8. 这是第八步 加载变量 是 真正的意义上的在本类中去操作

    public Dervied() { // 9. 无参构造的方法
        tellName();  // 10. 执行本类中的方法  此时的name变量是已经赋值加载了的
        printName(); // 12. 执行本类中的方法
    }

    public void tellName() { // 4. 此方法是重写的被继承的类中的方法
        System.out.println("Dervied tell name: " + name);
    }

    public void printName() { // 6. 此方法是重写的被继承的类中的方法
        System.out.println("Dervied print name: " + name);  
    }

    public static void main(String[] args){
        new Dervied();    // 1 :main函数是程序的入口执行 因为Dervied继承Base,所以new对象的时候先去new 了一个Base对象
    }
}

体会

1. 一个继承了其他类的类,在new对象(无参)时,首先是先走被继承的类的无参构造,但是方法是走本类重写的方法,然后才加载此类的变量,接着走本类的方法。。。最后完成一个对象的构造
2. 希望能多批评指导,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值