【JavaBase】09-面向对象之抽象与接口.pptx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【JavaBase】09-面向对象之抽象与接口

Java程序设计与开发基础09 面向对象之抽象与接口Java Program Design Development Essential谢钟扬目录1抽象类2接口3接口与抽象的区别抽象类代码练习:根据如下类图,编码实现抽象类现象与思考: 形状(Shape)类,求周长(getPerimeter())和求面积(getArea())方法,无法写出具体的实现,因为不确定是何种具体的形状。对于这种现象: 方案1:形状(Shape)类中不写这两个方法,由子类去自行定义? 方案2:形状(Shape)类中这两个方法方法体留空,由子类去覆盖? 上述两种方案的区别在哪? 方案1意味着:形状类没有求周长和求面积的行为。如果将子类对象向上转型为形状对象使用的话,就不能进行求周长和求面积的操作。方案2意味着:形状类有求周长和求面积的行为,但是没有实现方法体,如果对一个形状类的对象调用这两个方法,什么也不做。抽象类我们希望:通过形状(Shape)类来指定所有的形状都可以求周长和面积。但是形状类本身并不会求周长和面积,只有其具体的某个子类知道如何求自己的周长和面积。为了防止形状类的对象去调用未知的求周长和面积的方法,要禁止形状类创建对象,而只允许其子类创建对象(因为只有子类才知道如何求自身的周长和面积)。抽象类抽象类的概念: 通过抽取共性得到的类,只将它作为派生其他类的基类,而不作为想使用的特定的实例类,这样的类称为抽象类。 对于抽象类中,只是为了说明其所有子类都能进行的动作,而作为其本身并无法确定如何进行的方法,称为抽象方法。抽象方法只有方法的声明,没有方法体。 在Java中,使用关键字abstract来表示抽象。 用abstract修饰类,则声明该类为抽象类,不允许创建实例。 用abstract修饰方法,则声明该方法为抽象方法,不允许有方法体。 如果一个类有抽象方法,则该类必为抽象类。 抽象类的子类必须覆盖其抽象方法。抽象类前述类图可修改为如下所示:抽象类Shape.javapublic abstract class Shape { String name; abstract double getPerimeter(); abstract double getArea();}Circle.javapublic class Circle extends Shape{ double radius; public Circle(double radius) { this.radius = radius; } double getPerimeter() { return 3.14 * 2 * radius; } double getArea() { return 3.14 * radius * radius; }}抽象类public static void main(String[] args) { Shape circle = new Circle(5号圆 , 5.0); System.out.println(circle.name + 的周长为: + circle.getPerimeter()); System.out.println(circle.name + 的面积为: + circle.getArea());}运行结果:抽象类代码练习:请完成矩形(Rectengle),三角形(Triangle),正方形(Square)类的编写,实现其求周长,求面积方法。代码练习:音乐(Music)类的演奏(tune(Instrument instrument))方法将调用参数指定的乐器类对象的演奏(play())方法,将音乐类的所有音符弹奏出来;请根据类图编码实现分别使用弦乐,管乐,打击乐演奏《两只老虎》。接口思考题: 轿车(Car)类、卡车(Truck)类,船(Ship)类,飞机(Aircraft)类都是交通工具(Vehicle)类的子类。其中,只有飞机类有飞行(fly())方法和着陆(land())方法。 狗(Dog)类,鱼(Fish)类和鸟(Bird)类都是动物(Animal)类的子类,其中,鸟类有飞行(fly())方法和着陆(land())方法。 请按照类图编写代码接口思考题: 人(Person)类有飞去(flyTo())方法,通过参数指定乘坐某个能飞的对象,到达某处。其中,能飞的对象可以是飞机(Aircraft)类的对象,也可以是鸟(Bird)类的对象。 此时,flyTo()方法的参数该如何指定其类型?需要一个新的类型:能飞的(Flyable)来作为参数的类型。创建一个Flyable类,让Aircraft和Bird继承Flyable? 由于Java的继承必须为单继承,即一个类只能有一个超类;如果让Aircraft和Bird继承F

文档评论(0)

2266670 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档