- 3
- 0
- 约6.8千字
- 约 32页
- 2017-06-06 发布于湖北
- 举报
Java程序设计与开发基础
09 面向对象之抽象与接口
Java Program Design Development Essential
谢钟扬
抽象类
接口
接口与抽象的区别
1
2
3
抽象类
代码练习:
根据如下类图,编码实现
抽象类
现象与思考:
形状(Shape)类,求周长(getPerimeter())和求面积(getArea())方法,无法写出具体的实现,因为不确定是何种具体的形状。对于这种现象:
方案1:形状(Shape)类中不写这两个方法,由子类去自行定义?
方案2:形状(Shape)类中这两个方法方法体留空,由子类去覆盖?
上述两种方案的区别在哪?
方案1意味着:形状类没有求周长和求面积的行为。如果将子类对象向上转型为形状对象使用的话,就不能进行求周长和求面积的操作。
方案2意味着:形状类有求周长和求面积的行为,但是没有实现方法体,如果对一个形状类的对象调用这两个方法,什么也不做。
抽象类
我们希望:
通过形状(Shape)类来指定所有的形状都可以求周长和面积。
但是形状类本身并不会求周长和面积,只有其具体的某个子类知道如何求自己的周长和面积。
为了防止形状类的对象去调用未知的求周长和面积的方法,要禁止形状类创建对象,而只允许其子类创建对象(因为只有子类才知道如何求自身的周长和面积)。
抽象类的概念:
通过抽取共性得到的类,只将它作为派生其他类的基类,而不作为想使用的特定的实例类,这样的类称为抽象类。
对于抽象类中,只是为了说明其所有子类都能进行的动作,而作为其本身并无法确定如何进行的方法,称为抽象方法。抽象方法只有方法的声明,没有方法体。
抽象类
在Java中,使用关键字abstract来表示抽象。
用abstract修饰类,则声明该类为抽象类,不允许创建实例。
用abstract修饰方法,则声明该方法为抽象方法,不允许有方法体。
如果一个类有抽象方法,则该类必为抽象类。
抽象类的子类必须覆盖其抽象方法。
抽象类
前述类图可修改为如下所示:
抽象类
public abstract class Shape {
String name;
abstract double getPerimeter();
abstract double getArea();
}
public 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;
}
}
Shape.java
Circle.java
抽象类
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())方法,通过参数指定乘坐某个能飞的对象,到达某处。其中,
您可能关注的文档
最近下载
- 中医基础理论:气一元论.ppt VIP
- DB61_T 2002-2025 窄轨旅游轨道交通施工技术规范.pdf VIP
- DB61_T 2004-2025 水性环氧改性微表处施工技术规范.pdf VIP
- 北京市装配式建筑项目预制率和装配率计算说明及示例.ppt VIP
- 火灾报警控制器简单操作.doc VIP
- DB61_T 2012-2025 沥青路面一体化就地热再生施工技术规范.pdf VIP
- DB61_T 2013-2025 沥青路面半刚性基层微裂均质化处治施工技术规范.pdf VIP
- 单件流培训.ppt VIP
- 隧道工程应急处置方案(3篇).docx VIP
- 海关面试题及答案.doc VIP
原创力文档

文档评论(0)