Java编程思想:第7章 复用类

复用代码是Java众多引人注目的功能之一。但仅仅能复制代码并对之加以改变是不够的,还需要做更多的事情。

复用代码的两种形式:

1.组合,新类中产生现有类对象

2.继承,用现有类型创建新类型

7.1组合语法

7.2继承语法

7.2.1初始化基类

当创建了一个导出类的对象时,该对象包含了一个基类的子对象。这个子对象与你用基类直接创建的对象是一样的(Java会自动在导出类构造器里插入对基类构造器的调用,基类只含带参构造需要自己用super调用,不可省略),二者区别在于继承时基类的子对象包装在导出类对象内部,而直接创建来与外部。

7.3代理

代理:第三种关系,Java没有对它的直接支持,继承和组合之间中庸之道。

实现代理:把一个成员对象放在代理类中(就像组合),同时在新类中暴露了这个对象的所有方法(就像继承)。

7.4结合使用组合和继承

7.4.1确保正确清理

除了内存之外,不能依赖垃圾回收器去做任何事。如果需要清理,最好是编写自己的清理方法(子类清理方法和父类清理方法调用顺序按照创建反序来执行),在该对象使用结束之后,用finally{}子句调用清理方法,不要使用finalize()。

7.4.2名称屏蔽

子类可以对基类方法进行覆盖,重载。利用@override注解可以防止在想覆盖时意外写成了重载

7.5在组合与基础之间选择

继承:is-a

组合:has-a

7.6protected关键字

提供子类和同包的访问权限

7.7向上转型

为新类型提供方法,并不是继承技术中最重要的方面,最重要的是新类和基类之间的关系,这种关系可以用”新类是现有类的一种类型“来表示。

7.7.1为什么称为向上转型

7.7.2再论如何选择组合与继承

问一问自己是否需要从新类向基类转型,需要用继承,否则尽可能不要用

7.8final关键字

参照 Java final 关键字 & 参数传递特点

7.9初始化及类的加载

Java中类的加载在初次使用时发生,通常是创建对象或者访问static方法(构造器也算是static方法,只是隐式的)。

7.9.1继承与初始化

时间: 2024-10-18 07:26:19

Java编程思想:第7章 复用类的相关文章

Java编程思想(七、复用类)

复用代码是Java众多引人注目的功能之一. 复用类有两个方法.第一种:只需在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法称为组合.第二种:按照现有类的类型来创建新类.无需改变现有类的形式,采用现在类的形式并在其中添加新代码.这种方式称为继承. 1.组合语法.只需将对象引用置于新类中即可.编译器并不会简单地伟每一个引用都创建默认对象.如果想要初始化这些引用,可以在代码中的下列位置进行:1).在定义对象的地方.这意味着它们总是能够在构造器被调用之前被初始化.2).在类的构

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

Alan Kay 第一个定义了面向对象的语言 1.万物皆对象 2.程序是对象的集合,他们彼此通过发送消息来调用对方. 3.每个对象都拥有由其他对象所构成的存储 4.每个对象都拥有其类型(TYpe) 5.某一特定类型的所有对象都可以接收同样的消息. Booch提出一种更简洁的描述: 对象拥有状态(state) 行为(behavior) 和标识(identity) 每个对象都有一个接口 每个对象都属于定义了特性和行为的某个类(特性可以理解为属性的状态,行为可以理解为method) 在面向对象的程序设

Java编程思想笔记(第二章)

第二章  一切都是对象 尽管Java是基于C++的,但相比之下,Java是一种更纯粹的面向对象程序设计语言. c++和Java都是杂合型语言(hybird language) 用引用(reference)操作对象 类似遥控器(引用)来操作电视(对象) 在Java中你可以创建一个引用,但是没有与任何对象关联,比如: String s; 这个时候如果用则会报错.安全的做法是: 创建一个引用的同时并进行初始化 String s="1111"; 必须由你创建所有对象 New关键字的意思是给我一

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

六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add 在尾部增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementExce

Thinking In Java笔记(第七章 复用类)

第七章 复用类 复用代码是Java众多引人注目的功能之一,但想要成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情. Java中所有事物都是围绕着类来展开的.通过创建新类来复用代码,不必重新开头编写.此方法的窍门在于使用类而不破坏现有程序代码.本章中有两种代码重用机制来达到这一目的: 只需要在新的类中生成现有类的对象.由于新的类是由现有类的对象所组成的,这种方法通常成为组合.该方法只是复用了现有程序代码功能,而非形式上和之前的类有相似之处. 第二种方法更加细致

Java 编程思想 第五章 ----初始化与清理(1)

从今天开始每天一小时的java 编程思想的阅读和编码,其实就是把书上的代码抄下来. 5.5 清理:终结处理和垃圾回收 初始化和清理工作同等重要,但是清理工作却被常常忘记,但是在使用对象之后,对对象弃之不顾的做法并不是很安全.Java有自己的垃圾回收器负责回收无用的对象占据的内存资源.但也有特殊情况:假定你的内存区域不是用new获得的,这是无法用垃圾回收器释放所以java中允许在类中定义一个名为 finalize()的方法.       工作原理: 一旦垃圾回收器准备好释放对象占用的存储空间,将首

java 编程思想 一 第二章(对象)

上班之余发现有很多空闲时间,享受生活 又觉得有点空虚,而且对自己的基础知识总觉得掌握的不是很牢固,有点似懂非懂的感觉,近来刚好有时间,所以就考虑继续学习,然后再经过考虑和各大博主推荐选择了<java编程思想>这本书,在此分享学习心得跟大家共勉,也算是对自己的监督吧.(本内容需要有一定的基础才能看,类似于基础回顾,强化理解,新手可能有些地方不太能听懂) 一.什么是对象? 这并不是我们男女朋友那种对象哈哈. 简言之:万事万物皆对象. 个人理解:我们所要处理的事务或者建立的某种模型的抽象总结.具体就

Java 编程思想 第五章 初始化与清理 上

休整几天,闲了蛋疼也没写文章,这开学了坚持每天写// 必须的天天写.不敢再松懈了.羡慕一好朋友能坚持的静下心来学习. 5.1 用构造器确保初始化 在Java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化.  创建对象时,如果其类具有构造器,Java就会在用户有能力操作兑现之前自动调用相应的构造器,从而保证了初始化的进行.  当然了 接下来的我们需要的问题是: 1.所取的任何名字都可能与类的某个成员名称相冲突: 2.调用股早期是编译器的责任,所以必须让编译器知道应该调用哪个方法: 采取

java 编程思想笔记(三)——类的复用

一:复用功能介绍 复用代码,除了对代码复制并加以改变是不够的,除此之外,还能够使用类而不破坏现有程序代码. java 中代码复用可以分为以下三类:组合,继承,代理. 二:组合 新的类中使用现有类的对象,新的类由现有类的对象组成. 三:继承 通过extends 语法来实现声明. 四:代理 java 对代理没有提供直接支持,但通过组合和继承完成了间接实现,代理是组合和继承的中庸之道.代理=继承+组合 具体理解可以参考相关代码! 五:基类方法被子类重载 子类重载父类的方法,不会屏蔽其在基类中的任何版本