暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
第6章 Java类再生.pdf
309
14页
0次
2021-02-22
40墨值下载
6
类再生
Java
引人注目的一项特性是代码的重复使用或者再生。但最具革命意义的
是,除代码的复制和修改以外,我们还能做多得多的其他事情。
在象
C
那样的程序化语言里,代码的重复使用早已可行,但效果不是特别显
著。与
Java
的其他地方一样,这个方案解决的也是与类有关的问题。我们通
创建新类来重复使用代码,但却用不着重新创建,可以直接使用别人已建好并调
试好的现成类。
但这样做必须保证不会干扰原有的代码。在这一章里,我们将介绍两个达
这一目标的方法。第一个最简单:在新类里简单地创建原有类的对象我们把这
种方法叫作“合成”,因为新类由现有类的对象合并而成。我们只是简单地重复
利用代码的功能,而不是采用它的形式。
第二种方法则显得稍微有些技巧。它创建一个新类,将其作为现有类的一个
“类型”。我们可以原样采取现有类的形式,并在其中加入新代码,同时不会对
现有的类产生影响。这种魔术般的行为叫作“
Inheritance
,涉及的大多
数工作都是由编译器完成的。对于面向对象的程序设计,“继承”是最重要的基
础概念之一。它对我们下一章要讲述的内容会产生一些额外的影响。
对于合成与继承这两种方法,大多数语法和行为都是类似的(因为它们都要
根据现有的类型生成新类型)。在本章,我们将深入学习这些代码再生或者重复
使用的机制。
6.1
合成的语法
就以前的学习情况来看,事实上已进行了多次“合成”操作。为进行合成,
我们只需在新类里简单地置入对象句柄即可。举个例子来说,假定需要在一个对
象里容纳几个
String
对象、两种基本数据类型以及属于另一个类的一个对象。
于非基本类型的对象来说,只需将句柄置于新类即可;而对于基本数据类型来说,
需在定义若执麻烦
3
3.1.2
小节“赋值”
218-219
页程序
//: c06:SprinklerSystem.java
// Composition for code reuse.
class WaterSource {
private String s;
WaterSource() {
System.out.println("WaterSource()");
s = new String("Constructed");
}
public String toString() { return s; }
}
public class SprinklerSystem {
private String valve1, valve2, valve3, valve4;
WaterSource source;
int i;
float f;
void print() {
System.out.println("valve1 = " + valve1);
System.out.println("valve2 = " + valve2);
System.out.println("valve3 = " + valve3);
System.out.println("valve4 = " + valve4);
System.out.println("i = " + i);
System.out.println("f = " + f);
System.out.println("source = " + source);
}
public static void main(String[] args) {
SprinklerSystem x = new SprinklerSystem();
x.print();
}
} ///:~
WaterSource
内定义的一个方法是比较特别的
toString()
。大家不久就会知
toString()
String
,但却获得某个这样的对象,就会调用这个方法。所以在下面这个表达式
中:
System.out.println("source = " + source) ;
编译器会发现我们试图向一个
WaterSource
添加一个
String
对象
"source ="
of 14
40墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜