Java程序设计基础课程ch10 - 抽象类和接口

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
接口中的数据字段隐含为public static final 接口体中的方法隐式地声明为public abstract
使用接口
可以在能够使用任何其他数据类型的地方使用接口。 接口类型属于引用类型,接口类型的变量可以存储:
空引用(null) 任何实现该接口的类的实例的引用
类实现接口的语法
+ takeOff () + land () + fly ()
Bird
+ takeOff () + land () + fly () + buildNest () + layEggs () + eat ()
Superman
+ takeOff () + land () + fly () + leapBuilding () + stopBullet () + eat ()
例4
Sailer
+ dock () : void + cruise () : void
类需要声明为抽象类。
抽象类示例
GeometricObject
- color : String - filled : boolean
+ getColor () + setColor (String color) + isFilled () + setFilled (boolean filled) + getArea () + getPerimeter ()
例1
Flyer
+ takeOff () + land () + fly ()
AirPlane
+ takeOff () + land () + fly ()
public interface Flyer { void takeOff(); void land(); void fly();
}
public class Airplane implements Flyer { public void takeOff() { // 加速直到离地升空 // 收起起落架 } public void land() { // 放下起落架 // 减速并降低副翼直到降落 // 刹车 } public void fly() { // 保持引擎运转 }
+
getRadius ()
+
setRadius (double radius)
+ <<Override>> getArea ()
+ <<Override>> getPerimeter ()
+ <<Override>> toString ()
: double : void : double : double : String
: String : void : boolean : void : double : double
Rectangle
- width : double - height : double
+
getWidth ()
+
setWidth (double width)
+
getHeight ()
+
setHeight (double height)
Superman
+ takeOff () + land () + fly () + leapBuilding () + stopBullet () + eat ()
例3
wenku.baidu.com
Vehicle
Flyer
+ takeOff () + land () + fly ()
Animal + eat ()
Human
AirPlane
+ <<Override>> getArea ()
+ <<Override>> getPerimeter ()
+ <<Override>> toString ()
: double : void : double : void : double : double : String
Circle
- radius : double
}
例2
Flyer
+ takeOff () + land () + fly ()
AirPlane
+ takeOff () + land () + fly ()
Bird
+ takeOff () + land () + fly () + buildNest () + layEggs () + eat ()
一个类C如果满足下面的任一条件,则该类包含抽象 方法:
类C显式地包含一个抽象方法的声明; 类C的父类中声明的抽象方法未在类C和它的父类中实现; 类C的父接口中声明或继承一个方法,并且类C中未声明或继承
一个方法来实现它。
注意
抽象类和抽象方法必须用abstract关键字来修饰。 只有实例方法可以声明为抽象方法。 抽象类不能被实例化,即不能用new关键字创建对象。 抽象类的父类可以是具体类。 具体子类必须实现抽象父类中所有抽象方法,否则子
Example:GeometricObject.java,Circle.java, Rectangle.java, TestGeometricObject.java
接口
接口是常量和抽象方法的集合。接口是能力、规范、 协议的反映。
语法
[modifier] interface interfaceName { constant_declaration* abstract_method_declaration*
[modifier] class className [extends superclass] [implements interfaceNameList ] {
member_declaration* }
除非类被声明为abstract,所有父接口中声明的成员方法必须 被实现,或者通过在类中声明或者通过从父类继承已有的方法 声明。
Java程序设计
YANGLIN@BNUITC
第10章 抽象类和接口
学习目标
设计和使用抽象类 掌握接口的声明和实现 了解抽象类和接口的异同 掌握基本数据类型的包装类型 了解JDK1.5中基本数据类型与包装类型的自动转换
抽象类和抽象方法
Java中可以定义不含方法体的方法,方法的方法体由 该类的子类根据自己的情况去实现,这样的方法称为 抽象方法(abstract method),包含抽象方法的类必 须是抽象类(abstract class)。
相关文档
最新文档