读TIJ -6 类再生

《Think in java·第 6 章类再生》

读TIJ -1 对象入门 中已经就代码复用性吐槽了。继承关系在结果上(不是为了代码复用而设计继承关系)为代码复用提供了新的途径。

本章看其目录就比较杂,程序员的内聚思想去哪儿了?合成复用优先——合成、继承,为什么实现继承是不好的……

6.1 合成的语法

解释了一个例程,没有什么好说的。has_a关系。

6.2 继承的语法

【You can think of inheritance, then, as reusing the class.】Is_a;

super.xx( )、扩展

6.2.1 初始化基类  【p81一旦新对象被创建,就在Java heap(堆)中给它分配内存空间,以保存它所有的实例变量的值。这里所指的实例变量不仅包括自己声明的所有实例变量,也包括所有祖先类中声明的所有实例变量(父类的private实例变量也在内)】。所以子类对象包含了一个基类的对象作为“子对象”,可以想象,子对象必须被正确初始化就得调用它(即父类的)构造器。

6.3 合成与继承的结合

A1包含B又是A的子类。

6.3.1 确保正确的清除 这人对清除情有独钟啊。finally clause

6.3.2 名字的隐藏  父类的方法m1(int)、m1(String)与子类定义m1(double),简单的overload;既然说道名字的隐藏,就可以谈一下父类的public static m1(int)和子类的public static m1(int)

6.4 到底选择合成还是继承

【需要将成员对象的属性变为public】Never

6.5 protected

太简单

6.6 累积开发

继承的一个好处是它支持增量开发

6.7 上溯造型Upcasting

这一节比较流畅。

【The most important aspect of inheritance is not that it provides methods for the new class. It’s the relationship expressed between the new class and the base class. This relationship
can be summarized by saying, “The new class is a type of the existing class.”】

6.7.1 何谓“上溯造型”  是因为类图中父类在上,【Casting from a derived type to a base type moves up on the inheritance diagram】。在讲依赖的单向性时,我通常把父类放在下面。

再论合成与继承 不错。但是不如直接讲LSP。

6.8 final 关键字

6.8.1 final 数据  “constant”通常需要static final。final 修饰引用变量,仅保证其引用不变。Java does not provide a way to make any arbitrary object a constant.—>不变对象。

3. final 形参  方法体中不能够重新赋值,在一般情况下,【 This feature seems only marginally useful】,但是对于内部类有用。

6.8.2 final 方法  1阻止其他人改写 2效率。

6.8.3 final 类

6.9 初始化和类装载

就这些,

读TIJ -6 类再生

时间: 2024-11-06 06:55:00

读TIJ -6 类再生的相关文章

读TIJ -7 多形性

<Think in java·第 7 章  多形性> [面向对象的程序设计语言三种最基本的特征:数据抽象.继承和多态] 在这个层面是没有什么"思想"好谈的!当你按照人们熟悉的.习惯的思维方式,去思考"构造和组织"程序时,你可能会觉得很自然--你具有面向对象的思想:或者,有人X按照人们熟悉的.习惯的(人的而非机器的)思维方式,给你介绍.解释数据抽象.继承和多态时,你觉得贴近生活和人的思考习惯.你觉得他讲的概念理所当然.自然(当然也浅显易懂),这是X在&qu

读TIJ -1 对象入门

<Thinking In Java·第 1 章对象入门> 第 1 章约20页,是对面向对象的程序设计(OOP)的一个综述.按照其前言所述:"其中包括对"什么是对象"之类的基本问题的回答,并讲述了接口与实现.抽象与封装.消息与函数.继承与合成以及非常重要的多形性的概念.这一章会向大家提出一些对象创建的基本问题,比如构建器.对象存在于何处.创建好后把它们置于什么地方以及魔术般的垃圾收集器(能够清除不再需要的对象).要介绍的另一些问题还包括通过违例实现的错误控制机制.反

读TIJ -5 隐藏实施过程

<Think in java·第 5 章隐藏实施过程> 从第一句话,就感觉本章会令我不满意."将发生变化的东西与保持不变的东西分隔开"与封装一毛钱的关系都没有.封装变化又称OCP,与OOP的封装性无关. 关于库(中的类A)的设计,依赖库的程序B,要求库是向下兼容的.程序B依赖的是A的接口.库的创建者不管想怎样自由地进行修改与改进,前提是不修改A的接口. 这里,A的接口,表示A需要提供的服务,设计者不可能.也不会考虑该服务(的方法名.参数)未来是否保持不变或改变. 所以,JD

类再生

Thinking in Java 第六章 类再生 有两个实现类再生的方法: 第一个最简单:在新类里简单地创建原有类的对象.我们把这种方法叫作"合成",因为新类由现有       类的对象合并而成.我们只是简单地重复利用代码的功能,而不是采用它的形式. 第二种方法则显得稍微有些技巧.它创建一个新类,将其作为现有类的一个"类型".我们可以          原样采取现有类的形式,并在其中加入新代码,同时不会对现有的类产生影响.这种魔术般          的行为叫作&q

读TIJ -3 控制程序流程

<Think in java·第 3 章控制程序流程> 这一章应该不会涉及"思想",<编程导论(Java)·0.2.2 操作符和操作数>后,将相关内容压缩成一节<第3章功能抽象·3.2实现>. 3.1 使用Java 运算符 副作用(side effect):[p98:副作用一般是针对操作(表达式)而言的,一个操作/表达式有"副作用"是指在对该表达式求值时,会改变程序的一个或多个数据,以致再次对该表达式求值时,可能会得出不同的结果.

并发数据结构 : .NET Framework 中提供的读写锁 ReaderWriterLockSlim 类

转自;http://www.cnblogs.com/lucifer1982/archive/2008/12/07/1349437.html ReaderWriterLockSlim 类 新的 ReaderWriterLockSlim 类支持三种锁定模式:Read,Write,UpgradeableRead.这三种模式对应的方法分别是 EnterReadLock,EnterWriteLock,EnterUpgradeableReadLock .再就是与此对应的 TryEnterReadLock,T

读TIJ -4 初始化和清除

<Think in java·第 4 章初始化和清除> 本章介绍对象的创建和消除. 4.1 用构建器自动初始化 [You can imagine creating a method called initialize( ) for every class you write.]一句话的正确解读是,你(男生)将自己想象成为女生.所以,我专门用一节 < 编程导论(Java)·2.3.6 构造器不是方法>强调这一点. 4.2 方法过载 这一段解释非常经典,按照人们的日常生活介绍重载.同时

五分钟读懂UML类图

平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道.实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一.类的属性的表示方式 在UML类图中,类使用包含类名.属性(field) 和方法(method) 且带有分割线的矩形来表示,比如下图表示一个Employee类,它包含name,age和email这3个属性,以及modifyInfo()方法. 那么属性/方法名称前加的加号和减号是什么意思呢?它们表示了这个属性或方法的可见性,UML类图中表示可见性的符

8.JAVA编程思想类再生

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040239 "Java 引人注目的一项特性是代码的重复使用或者再生.但最具革命意义的是,除代码的复制和修改以外,我们还能做多得多的其他事情." 在象C 那样的程序化语言里,代码的重复使用早已可行,但效果不是特别显著.与Java 的其他地方一样,这个方案解决的也是与类有关的问题.我们通过创建新类来重复使用代码,但却用不着重新创建,可以直接使用别人已建好并调试好的现成