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初始化及类的加载

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

  

Java编程思想第七章复用类的更多相关文章

  1. [Java编程思想] 第七章 复用类

    第七章 复用类 第一种方法非常直观:只需在新的类中产生现有类的对象(组合). 第二种方法更细致一些:它按照现有类的类型来创建新类(继承). 7.1 组合语法   只需将对象引用置于新类中即可. cla ...

  2. Java编程思想——第17章 容器深入研究 读书笔记(三)

    七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...

  3. Java编程思想——第17章 容器深入研究(two)

    六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add ...

  4. Java编程思想 第21章 并发

    这是在2013年的笔记整理.现在重新拿出来,放在网上,重新总结下. 两种基本的线程实现方式 以及中断 package thread; /** * * @author zjf * @create_tim ...

  5. java编程思想笔记(第一章)

    Alan Kay 第一个定义了面向对象的语言 1.万物皆对象 2.程序是对象的集合,他们彼此通过发送消息来调用对方. 3.每个对象都拥有由其他对象所构成的存储 4.每个对象都拥有其类型(TYpe) 5 ...

  6. 《Java编程思想》笔记 第七章 复用类

    1.组合 将其他类的对象引用置于新的类中. 3.继承 extends 从已知的一个类中派生出新的一个类,叫子类.子类实现了父类所有 非私有化 非静态 的属性和方法,并能根据自己的实际需求扩展出新的行为 ...

  7. 《java编程思想》P125-P140(第七章复用类部分)

    1.类的成员默认的是包访问权限.允许包内成员访问 2.super.scrub() 调用基类的scrub方法 3.继承并不是复制基类的接口.当创建了一个导出类(子类)对象时,该对象包含了一个基类的子对象 ...

  8. 初读"Thinking in Java"读书笔记之第七章 --- 复用类

    组合语法 将对象引用置于新类中,即形成类的组合. 引用初始化方法 在定义处初始化. 在类的构造器中初始化. 在使用这些对象之前,进行"惰性初始化". 使用实例初始化. 继承语法 J ...

  9. Java编程思想学习(七) 抽象类和接口

    1.抽象类和抽象方法 抽象方法:不完整的,仅有声明而没有方法体. abstract void f(); 抽象类:包含抽象方法的类.(若一个类包含一个或多个抽象方法,则该类必须限定为抽象的.) 1.用抽 ...

随机推荐

  1. Android相机实时自动对焦的完美实现

    https://zhidao.baidu.com/question/873328177698804372.html Android相机实时自动对焦的完美实现 http://blog.csdn.net/ ...

  2. [SCOI2005]超级格雷码

    题目 BZOJ 洛谷 做法 爆搜真有意思 满足不重复且异或后仅一位为\(1\) 利用奇偶性交叉搜索(仅改变一位) My complete code #include<bits/stdc++.h& ...

  3. 获取蓝牙mac地址

    http://macpu.github.io/2015/11/12/iOS%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E8%93%9D%E7%89%99Mac%E5%9C ...

  4. SQL Server 字符串拼接与拆分 string varchar Split and Join

    1.Split    SQL Server 2008 新语法: DECLARE @str VARCHAR(MAX) SET @str = REPLACE(@teeIDs, ',', '''),(''' ...

  5. 使用shell统计字符串出现的次数,并从大到小进行排序显示

  6. java 监控命令

    jps 查找java所有进程及对应pid -v 列出启动参数 有些默认的参数,使用-v是看不到的,需要执行如下: jcmd pid VM.flags jstack pid 查看该进程的堆栈信息 找到进 ...

  7. java应用线上CPU过高问题排查

    1.top 命令,查看占用CPU最高的PID.ps aux|grep PID 进一步确定tomcat进程出现问题.2.ps -mp pid -o THREAD,tid,time显示线程列表3.prin ...

  8. java对象流(二)

    对象流,可以将java中的对象转为字节进行输出.将对象写入文件时.文件输出流是将字节写入到文件中. 对象流是将给定的对象转化为一组字节.writeObject()方法就是将对象转为字节. 对象流,读的 ...

  9. http://www.cnblogs.com/jscode/archive/2012/09/03/2669299.html

    http://www.cnblogs.com/jscode/archive/2012/09/03/2669299.html

  10. 20个PHP面试题及答案

    php学了那么久了,先来小试牛刀,看下这些PHP程序员面试题都会不会?初级题目1.问题:请用最简单的语言描述PHP是什么?答:PHP全称:Hypertext Preprocessor,是一种用来开发动 ...