Java程序设计 韦鹏程 石熙 肖丽 单元5 接口与包新.pptVIP

Java程序设计 韦鹏程 石熙 肖丽 单元5 接口与包新.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
学习目标: 掌握Java接口的使用 理解接口与抽象类的异同 了解Java包的使用 掌握Java的访问控制修饰符的使用 了解Java API 任务一 计算各种形状的面积与周长 一、任务描述 在单元四的最后一个任务中,我们建立了形状抽象类,并从中派生出矩形与圆形的子类,实现了不同形状的面积计算功能。本任务要求进一步扩展原有程序,在计算各种形状面积的基础上,增加周长的计算功能。而且,希望程序具备良好的可读写和扩展性,例如可以进一步增加新的形状或者新的功能。 1.改写抽象类 Shape类可以定义为以下形式 abstract class Shape{ protected String name; Shape(String n){name=n;} abstract double area();//计算面积的抽象方法 abstract double perimeter();//计算周长的抽象方法 } 2.增加计算周长的接口 (1).声明接口 修改父类抽象类的做法可以实现本任务要求的功能,然而却不够灵活。每当要增加一个新的功能,我们都得修改父类抽象类,增加新的抽象方法,并在子类中给出具体实现。而子类一旦继承了抽象类,就必须实现这个方法,而不能选择性的继承。 在本任务中,将使用更灵活的“接口”方式,来实现新增的计算周长的功能。 编写代码,保存为“Shape.java”。 (2).测试接口 编写主类及main()方法,测试以上接口的作用,程序保存为“ShapeCalDemo.java”。 程序5.2 ShapeCalDemo: public class ShapeCalDemo{ public static void main(String[] args){ Rect R=new Rect(10,20); Circle C=new Circle(15); System.out.println(R.name+的面积为+R.area()+,的周长为+R.perimeter()); System.out.println(C.name+的面积为+C.area()+,的周长为+C.perimeter()); } } 3.更灵活的使用接口 (1).全面改写程序 程序5.1中,我们在原有程序的基础上,增加接口,实现新的功能。事实上,我们可以使用接口,全面的改写原来的程序,使其结构更加清晰,也更容易扩展。 主要的思路是将所有的功能都用接口来实现,而父类抽象类Shape仅保留一个名称属性。在子类Rect和Circle中,通过实现接口来实现具体的功能。 全面改写的程序保存为“ShapeCalTest.java”。 (2).扩展功能 若任务进一步要求计算正方形的周长和面积,我们只需新增一些简单的代码即可实现。继续派生出子类Square正方形类。而正方形是矩形的特例,显然,从矩形类Rect继承比从抽象类Shape继承更加简单。 Square类的声明如下。正方形无论是面积还是周长的计算,都可以套用矩形的方法。因此,不必重写三个实现功能的方法。 class Square extends Rect { Square(){ this(0); } Square(double a){ super(a,a); name=正方形; } } 三、相关知识 1.接口的使用 接口的定义使用interface关键字,通用格式为 interface 接口名{ 接口体 } 接口名通常以able或ible结尾,表明接口能完成一定的行为。 接口中只能定义常量和抽象方法。常量默认为final static修饰,无论是否显式的使用修饰符。而方法默认为public abstract,同样无论是否显式的使用修饰符。 【例5.1】接口的声明 interface Computable{ int N=100; int f(int x,int y); public abstract void g(); } 代码声明了名为Computable的接口,其中N为常量,尽管不使用final static修饰符。方法f()和g()同样均为公有的抽象方法,无论其是否使用相应的修饰符。 2).实现接口 类的声明中用implements子句来表示一个类实现了某个接口。在类体中,接口中定义的常量可以直接使用;而所有的抽象方法都必须给出具体的实现,且必须使用public修饰。 虽然一个类只能继承一个父类,却可以实现多个接口,只需在implements子句中用逗号分隔。 实现接口的通用格式为: class 类名 implements 接口名1,接口名2?… 【例5.2】接口的实现 class Test implements Computable{ public

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档