构造器的调用顺序

    构造器被调用应遵循的程序:
    1、在其它任何事物发生之前,将分配给对象的存储空间初始化为二进制的零。
    2、调用基类构造器。该步骤不断递归,首先是构造这种层次结构的根,然后是下一层导出类,直到最低层的导出类。
    3、按声明顺序调用成员的初始化方法。
    4、调用导出类构造器的主体。

    一例如下:

class aa{
    aa(){
        System.out.println("显示aa()");
    }
}
class bb{
    bb(){
        System.out.println("显示bb()");
    }
}
class cc{
    cc(){
        System.out.println("显示cc()");
    }
}
class aa1 extends aa{
    aa1(){
        System.out.println("显示aa1()");
    }
}
class aa12 extends aa1{
    aa12(){
        System.out.println("显示aa12()");
    }
}

public class Sandwich extends aa12{
    private bb b = new bb();
    private cc c = new cc();
    Sandwich(){
        System.out.println("显示Sandwich()");
    }
    public static void main(String[] args) {
        // TODO 自动生成方法存根
        new Sandwich();
    }

}

 运行结果:
显示aa()
显示aa1()
显示aa12()
显示bb()
显示cc()
显示Sandwich()

    通过继承和组合创建的新类本可以不担心其清理,一旦要手工清理,则因继承的缘故,出现作为垃圾回收一部分的特殊清理动作,就必须在导出类中覆盖dispose() 方法。对于对象和字段,销毁的顺序应该和初始化顺序相反。对于基类,首先对其导出类进行清一,然后才是基类。

   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值