zoukankan      html  css  js  c++  java
  • Java编程思想第七章复用类

    7.1组合语法

      在一个类中引入多个对象,以提高代码的复用性与功能。

    7.2继承语法

      使用继承子类可以获得,导出类可以获得基类的成员(变量与方法)。

      注:这里注意权限控制,若基类中的成员为默认权限,只有在同一包下才能继承得到。protect修饰时,导出类可以获取。public修饰时,任何类都可以拿到。private修饰就属于基类自己的东西了。

      为了解决导出类中调用父类同名方法出现递归问题,java提出了super关键字解决这个问题。

      在继承体系中,初始化都是由内向外的,即由基类到导出类扩散的,即先初始化基类在初始化导出类。

        注:在这个过程中,编译器会在导出类的无参构造器中调用基类的无参构造器。

    7.3代理

      在扩展类中创建功能类的对象。扩展类中提供功能接口,其实现均有功能类完成。

    7.4结合使用组合和继承  

      确保正确清理:

        注意在代码的过程中,要是用try{}finally{}模块,try的保护功能是,无论try中的代码怎么返回,finally{}域中的代码都会执行。

      名称屏蔽:

        java中不存在名称屏蔽,即导出类与基类的重载并不相互影响。为了解决重写的声明,在jdk1.5中提出了@Override注解来标明重写方法。

    7.5组合与继承

      其实从我目前来看,组合几乎很多很多,但是继承出现的场景很少。

      特别是现在分布式大行其道,大家都在想着如何拆分,继承这种耦合性强的功能,使用起来肯定需要很深的思考与整理才能发挥好的作用。

    7.6protect关键字

      修饰内容对导出类(子类)是可见的。

    7.7向上转型

      即在参数处使用基类,可以接受导出类的对象。

      实际上就是另一种方式的父类引用指向子类,是java三大特性多态的一种体现。(下一章就要再一次理解多态啦)。

    7.8final关键字

      该关键字意味着无法改变的,基于设计或效率两方面考量。

      注:一个即被static修饰,又被final修饰的域,只占据一个不能改变的存储空间。(常量池中?这点书中并没有指明。)

      对基本数据类型,final使数值不变(相当于变成常量),对于引用数据类型,final使引用恒定不变。

      空白final,指被声明final又未给定初值的域。但是无论什么情况编译器都会保证空白final在使用前被初始化。

      final参数

        使用final修饰参数,这意味着无法在方法使用的过程中,更改参数引用所指向的对象。

      final方法

        将方法锁定,以防止任何继承类修改它的含义。另一点是关于效率,但是这在新版本中已经交由JDK去做了。

      final与private关键字

        类中所有的private方法都隐式指向final。这正是由于private方法是无法获取的。

        但是这并不意味着“覆盖”一个private方法是有效果的。实际上覆盖是基类提供的接口才能进行覆盖,如果你拿不到这个接口怎么能谈得上覆盖呢?

    7.9初始化及类的加载

      注:基类的加载总是最优先的,静态也是优先的。初始化过程总是从内到外的,即从基类到扩展类。

      

     

  • 相关阅读:
    Android git提交代码所需忽略的文件
    python 代码命名规范
    appium-设计思路
    appium-循环执行一条用例,失败时停止执行
    BeautifulReport 遇到的问题 template
    接口自动化
    python-装饰器
    linux-vi编辑器创建和编辑正文文件
    linux-文件的压缩与解压缩
    python学习第一天
  • 原文地址:https://www.cnblogs.com/lilinzhiyu/p/8270910.html
Copyright © 2011-2022 走看看