- 1、本文档共130页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大学Java实用教程——最好的java编程书籍第6章
29 t.running(); 30 Fish f = new Fish(); 31 f.swimming(); 32 } 33 } 该示例程序中定义了CanSwim和CanRun两个接口,实现了CanSwim接口的类表示能游泳,实现了CanRun接口的类表示能跑,龟(Turtle)既能游泳又能跑,所以实现了CanSwim和CanRun两个接口。一般的鱼(Fish)只会游泳,所以只实现了CanSwim接口。在Fish类与Turtle类中,对所实现接口中声明的方法进行了具体的定义,并且方法一定要用public修饰,否则会出现编译错误。这是因为Java语言中规定,在类中实现接口中定义的方法时,不能比接口中定义的方法有更低的访问权限。接口中定义的方法都是公共的,所以这些方法在实现接口的类中定义时,只能定义成公共的。 注意:一个类只能有一个父类,但可以实现多个接口。如定义了一个动物类: class Animal { … } 则龟(Turtle)类可以定义为: class Turtle extends Animal implements CanSwim, CanRun { … } 即Turtle类继承了Animal类,实现了CanSwim和CanRun两个接口。 注意:如果一个类中没有实现接口中声明的所有方法,则这个类只能定义为一个抽 象类。 为了简单起见,Java语言不支持多重继承,即一个类不能有多个父类。如果在程序中确实要实现多重继承的机制,可以借助于接口来实现,因为一个类可以实现多个接口,如上例中的Turtle类。 初学者在程序中使用接口时,应注意以下问题: ● 避免接口中所有的方法都用public abstract修饰。 ● 避免接口中所有的数据成员都用public static final修饰(即为常量)。 ● 接口中的数据成员在定义时必须有初值。 ● 在类中实现接口中定义的方法时,必须用public修饰。 ● 接口和抽象类一样,都不能用来创建实例对象。 由于接口中定义的数据成员都是静态的和公共的常量,而静态数据成员属于类成员,因此在实现了接口的类中,可以直接以“接口名.常量名”的方式引用接口中定义的数据成员。 6.3.2 【案例6-3】 可以飞行的类 1. 案例描述 定义具有可飞行特性的类。该案例的目的是为了说明接口在程序中的应用和接口是如何实现多态性的。 2. 案例效果 案例程序的执行效果如图6-6所示。从图中可以看出,鸟可以在空中飞行,飞机也可以在空中飞行。 图6-6 案例6-3的执行效果 3. 技术分析 飞行并不是某类所专有的特性,鸟可以飞行,飞机也可以飞行,而鸟和飞机是两个互不相干的类,只不过它们都具有可飞行的特性。因此,可以定义一个具有“可飞行(Flyable)”功能的接口,在定义鸟类和飞机类时分别去实现“可飞行”这个接口。 4. 程序解析 案例程序如下: 01 //****************************************** 02 //案例: 6-3 03 //程序名:TestFlyable.java 04 //功能:定义可以飞行的类 05 //****************************************** 06 07 interface Flyable{ 08 public void fly(); 09 } 10 11 class Bird implements Flyable{ 12 public void fly(){ 13 System.out.println(bird is flying in the air.); 14 } 15 } 16 17 class Plane implements Flyable{ 18 public void fly(){ 19 System.out.println(plane is flying in the air.); 20 } 21 } 22 23 class TestFlyable{ 24 static void flying(Flyable f){ 25 f.fly(); 26 } 27 28 public static void main(String[] args){ 29 Bird b = new Bird(); 30 Plane p = new Plane(); 31 flying(b); 32 flying(p); 33 } 34 } 程序的07~09行定义了一个表示可飞行的接口Flyable,在可以飞行的接口中
文档评论(0)