构造器与多态

构造器与多态

通常情况下,对象销毁都是由jvm垃圾回收器进行处理,这里只是通过代码展示初始化顺序和清理操作顺序。

父类  


子类


测试代码


测试结果

运行sharedTest结果如下:

Creating1Shared:0Creating2Composing:0Creating2Composing:1Creating2Composing:2Disposing2Composing:0Disposing2Composing:1Disposing2Composing:2Disposing1Shared:0


运行sharedesTest结果如下:

Creating1Shared:0Creating1Shared:1Creating1Shared:2Creating2Composing:0Creating2Composing:1Creating2Composing:2Disposing2Composing:0Disposing1Shared:0Disposing2Composing:1Disposing1Shared:1Disposing2Composing:2Disposing1Shared:2

结论

初始化顺序是父类优先于子类

销毁反之,子类优先父类

分析原因

子类是继承父类,那么子类调用父类的成员是很普遍,所以父类的构造器总是在子类构造过程中调用。

按照继承的层次逐渐向上链接,每个基类的构造器都能得到调用。

构造函数是必须的,也就是说构造函数不同于其他函数,它是对象产生的基础,虽然对象可能是不完整的。

更为深层次的理解是为对象及对象属性、方法分配内存空间,只有在内存中存在一席之地,子类调用是才能正常使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 构造过程 构造过程是使用类、结构体或枚举类型的实例之前的准备过程。在新实例可用前必须执行这个过程,具体操作包括设置...
    蛊毒_阅读 4,003评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,931评论 18 399
  • 本章将会介绍 存储属性的初始赋值自定义构造过程默认构造器值类型的构造器代理类的继承和构造过程可失败构造器必要构造器...
    寒桥阅读 4,123评论 0 0
  • 20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...
    iOS_恒仔阅读 6,800评论 1 6
  • 有的时候我们想的很近,有的时候我们想的又很远。 每天都被忙碌和忙碌压着,被着密不透风黑茧包裹着。偶尔想起自己还有那...
    riverwww阅读 3,089评论 0 0