1 / 53
文档名称:

第八章接口和包.ppt

格式:ppt   页数:53
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第八章接口和包.ppt

上传人:中国课件站 2011/10/11 文件大小:0 KB

下载得到文件列表

第八章接口和包.ppt

文档介绍

文档介绍:JAVA语言程序设计 第八章接口和包
一、多态
在面向对象程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。
多态通过分离“做什么”和“怎么做”,从另一个角度将接口和实现分离开来。多态不但能够改善代码的组织结构和可读性,还能够创建“可扩展的”程序——即无论在项目最初创建时还是在需要添加新功能时都可以“生长”的程序。
“多态”的作用是消除类型之间的耦合关系。多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要它们都是从同一基类导出而来的。这种区别是根据方法行为的不同而表示出来的,虽然这些方法都可以通过同一个基类来调用。
//这是一个枚举类,包含固定数目的、可供选择的不变对
//象,不再产生另外的对象,因为其构造器是私有的。
package ;
public class Note{
private String noteName;
private Note(String noteName){
=noteName;
}
public String toString(){return noteName;}
public static final Note
MIDDLE_C=new Note("Middle C"),
C_SHARP =new Note("C Sharp"),
B_FLAT =new Note("B Flat");
//etc.
}
//下面是一个有关乐器的例子。
//
package ;
public class Instrument{
public void play(Note n)
{("()"+n);}
String what(){return "Instrument";}
void adjust(){ }
}
//
package ;
public class Wind extends Instrument{
public void play(Note n)
{ ("()"+n); }
}
//
import ;
import ;
import ;
public class Music {
public static void tune(Instrument i)
{ //……
();
}
public static void main(String[] args)
{ Wind flute=new Wind();
tune(flute);//向上转型
}
}
忘记对象类型
。为什么所有人都故意忘记对象的类型呢?在进行向上转型时,就会产生这种情况;并且如果让tune()方法接受一个Wind引用作为自己的参数,似乎会更为直观。
但这引发的一个重要问题:如果那样做,就需要为系统内Instrument的每种新类型都编写一个新的tune()。假设这种推理,现在再加入Stringed(弦乐)和Brass(管乐)这两种Instrument(乐器)
package ;
public class Stringed extends Instrument
{ public void play(Note n)
{ (“()"+n); }
}
public class Brass extends Instrument{
public void play(Note n)
{ (“()"+n); }
}
public class Music2{
public static void tune(Wind i)
{ (); }
public static void tune(Stringed i)
{ (); }
public static void tune(Brass i)
{ (); }
public static void main(string[] args){
Wind flute=new Wind();
Stringed v