think in java 第六章 类再生

原创 2015年11月17日 22:18:15

Java 引人注目的一项特性是代码的重复使用或者再生。但最具革命意义的是,除代码的复制和修改以外,我们还能做多得多的其他事情。


合成的语法————在类里加入其他类的对象引用即可完成。    toString  这个方法还需要查资料了解一下。

继承的语法————在类主体的起始花括号之前,需要放置一个关键字extends,在后面跟随“基础类”的名字。若采取这种做法,就可自动
获得基础类的所有数据成员以及方法


继承  ————基础类和衍生类


构建器(构造方法)


合成和继承可以一起使用

如果 Java 基础类有一个方法名被“过载”使用多次,在衍生类里对那个方法名的重新定义就不会隐藏任何基础类的版本。所
以无论方法在这一级还是在一个基础类中定义,过载都会生效:

在面向对象的程序设计中,创建和使用代码最可能采取的一种做法是:将数据和方法统一封装到一个类里,
并且使用那个类的对象。有些时候,需通过“合成”技术用现成的类来构造新类。而继承是最少见的一种做
法。因此,尽管继承在学习OOP的过程中得到了大量的强调,但并不意味着应该尽可能地到处使用它。相
反,使用它时要特别慎重。只有在清楚知道继承在所有方法中最有效的前提下,才可考虑它。为判断自己到
底应该选用合成还是继承,一个最简单的办法就是考虑是否需要从新类上溯造型回基础类。若必须上溯,就
需要继承。但如果不需要上溯造型,就应提醒自己防止继承的滥用。在下一章里(多形性),会向大家介绍
必须进行上溯造型的一种场合。但只要记住经常问自己“我真的需要上溯造型吗”,对于合成还是继承的选
择就不应该是个太大的问题。



 final 关键字



尽管继承在面向对象的程序设计中得到了特别的强调,但在实际启动一个设计时,最好还是先考虑采用合成
技术。只有在特别必要的时候,才应考虑采用继承技术(下一章还会讲到这个问题)。合成显得更加灵活。
但是,通过对自己的成员类型应用一些继承技巧,可在运行期准确改变那些成员对象的类型,由此可改变它
们的行为


相关文章推荐

Think In Java第六章 访问权限修饰符

java访问修饰符: 包访问权限(friendly):当前包中的所有类对那个成员都具有访问权限,但是对于这个包之外的所有的类,这个成员是private的。由于一个编译单元(即一个文件),只能隶属一个包...

[think in java]第10章 内部类

内部类 定义:将一个类定一个在另一个类的内部定义,就是内部类。 创建内部类 如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,需要具体的指明:outerClassName.Inner...

Think in Java第七章 复用类

组合与继承:两种复用代码的方法: 第一种:只需要在新的类中产生现有类的对象,由于新的类是由现有类的对象组成的,所以这个方法称为组合,该方法只是复用了现有程序代码的功能,而并非它的形式。 第二种:按照现...

[think in java]第7章 复用类

java中,复用代码有两种途径: 在新的类中产生现有类的对象。由于新的类是由现有类的对象组成的,所以这种方法称为组合。采用继承的方式来复用。 继承 继承采用关键字extends实现。...

think in java之斐波那契数列

斐波纳契数列(Fibonacci Sequence),又称黄金分割数列。 指的是这样一个数列:1、1、2、3、5、8、13、21、……这个数列从第三项开始,每一项都等于前两项之和。 在数学上,斐波...

Think In Java第二章 一切都是对象

1. 使用引用来操纵对象2. jvm中的内存分布3. 基本数据类型基本数据类型 大小 包装类 boolean --- Bo...

读书笔记 Think in Java 4th 第十一章 持有对象 List、Set、Queue和Map

容器(集合)的基本类型     基本类型是List、Set、Queue和Map。容器某些特性:Set对于每个值都只保存一个对象,Map 是允许将某些对象与其他一些对象关联起来的关联数组,Java容器类...

[think in java]第13章 字符串

不可变String String对象是不可变的。

think in java interview-高级开发人员面试宝典(三)

收集自Oracle公司的10次(60道)电话面试全部问答(英语) Q: What environment variables do I need to set on my machi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:think in java 第六章 类再生
举报原因:
原因补充:

(最多只允许输入30个字)