ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TIJ-4Edition-复用类

2021-09-17 13:03:37  阅读:161  来源: 互联网

标签:4Edition 继承 子类 复用 构造 TIJ 基类 父类 final


1、组合和继承

  A is-a B:A、B本质上是一个东西。——继承

  A has-a B: B是A的一部分,但它们不是一回事。——组合

  组合复用了功能,而非形式。

  继承不只是复制基类的接口和字段,当创建一个导出类对象时,该对象中包含了一个基类的子对象

  所以,要对基类子对象进行初始化,在导出类构造器中调用基类的构造器。

  编译器会在导出类构造器中插入对基类默认构造器的调用。

  构造过程是从基类开始的往下扩散的。

  父类没有默认构造器时,就要显式地用super关键字调用带参构造器。

2、代理

  代理像是继承和组合的这种,更偏向于组合一点。

  我们可以用一个代理对象封装目标对象的功能,可以使功能更加的纯粹(只暴露出我们想要的)。

3、结合使用继承和组合

  1、名称屏蔽

    子类重载父类方法时,不会屏蔽父类的方法。它们会同时存在。

  2、protected关键字

    protected关键字修饰的域只有在导出类同包的类中才能访问。

  3、向上转型

    沿接口树向上转或沿继承链向上转。

  4、final关键字

    1、永不改变的编译时常量。

    2、运行时被初始化的值,但是希望它初始化就不改变。

    static final修饰的域只能占据一段不能改变的存储空间。这时它就是一个编译时常量,必须在定义时赋值。

    编译时常量的初始值会被保存在Class文件的ConstantValue属性中。因此能在类加载时进行初始化。

    final修饰的引用不能被修改,但是引用指向的对象是可以修改的。

    final修饰的在继承中方法不能被重写

    private方法都是默认为final的,因此也无法被重写。(都不能访问,怎么能允许重写)

    final修饰的类不能被继承

4、继承中的初始化顺序

  父类静态代码块 > 子类静态代码块 > 父类代码块 > 父类代码块 > 父类构造器 > 子类代码块 > 子类构造器

     

标签:4Edition,继承,子类,复用,构造,TIJ,基类,父类,final
来源: https://www.cnblogs.com/lqblala/p/15150525.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有