当前位置:文档之家› 《抽象类与接口》PPT课件

《抽象类与接口》PPT课件


[public abstract] void doSomething (int i, double x);
[public abstract] int doSomethingElse(String s);
}
接口的实现
接口的实现是交给类来完成的。
[public] class MyInterfaceImp [extends 父类名] implements 接口名
//定义抽象类Book abstract class Book { int bookPage; float discount; float pagePrice; // 定义三个成员属性 public Book(int bookPage,float discount,float pagePrice) {
class ScienceBook extends Book{ //定义科技书 public ScienceBook(int bookPage,float discount,float
pagePrice){ super(bookPage,discount,pagePrice); } public void showKind() //实现抽象方法 {System.out.println("The book's type is science"); } } class ArtBook extends Book{ //定义文艺书 public ArtBook(int bookPage,float discount,float
{
成员属性;
方法();
//定义一般方法
构造方法();
abstract 方法(); //定义抽象方法
}
抽象类的作用
抽象类本身不能实例化,而抽象类的子类实现 了抽象类的抽象方法,因此通常都是定义抽象 类的引用指向子类的实例,自动完成向上转型, 是对象多态性的一个很好体现。
AbstractClass ac=new AbstractClassImp();
接口的定义
一个接口的定义包含以下部分:
访问控制符
接口关键字
接口名
[public] interface MyInterface
接口可以继承接口
[extends Interface1…]
{ 接口中可以定义常量
[public static final] double E = 2.718282;
抽象方法,只声明不实现
pagePrice){ super(bookPage,discount,pagePrice); } public void showKind() //实现抽象方法 {System.out.println("The book's type is art"); } }
public class BookTest{ public static void main(String args[]){ Book sb=new ScienceBook(520,0.7f,0.2f); sb.showKind(); System.out.println(getPrice());
不同,则此方法定义为抽象方法。(必须项)
练习:学生有姓名、年龄和成绩属性;教师有姓名、年 龄和职称属性;学生和教师都能讲话,但所讲的内 容不同。采用抽象类的方式完成上述代码的编写。
接口的定义
现实世界的接口: 两个不同物体之间相互交互所必须通过的一个中介,没有这
个中介,两者无法交互。
软件世界的接口: (1) 狭义:某个程序设计语言所提供的API。 (2) 广义:人与软件交互的图形界面(GUI)。
抽象类与接口
本章内容
1.抽象类的概念、定义与应用 2.接口的概念、定义与应用
介绍几种常见的设计模式 3.抽象类与接口的比较
相同点 不同点
抽象类
包含有至少一个抽象方法的类称为抽象类, 用abstract关键字修饰,不能创建自己的对 象,抽象方法交由子类去覆盖(完成方法体)。
抽象方法:只有方法的头部,没有方法体。 在继承抽象类的子类中来实现父类中的所有 抽象方法(完成方法体部分)。
this.bookPage=bookPage; this.discount=discount; this.pagePrice=pagePrice; } abstract void showKind(); //显示图书种类 public float getPrice() { return bookPage*discount*pagePrice; } }
Java中的接口: 一种特殊的“类”,只能包含常量和抽象方法,属于引用数
据类型。
接口的作用
为什么要定义接口: Java出于安全性考虑,只支持单重继承,而不支持多重继承。 多重继承更能表达现实世界。
接口的作用:
配合继承解决Java无法多继承的缺点,提供方法声明 与实现相分离的机制,使实现接口的各个类表现出多 态性。 A a=new B(); (B是实现了接口A的类)
Book tb=new ArtBook(400,0.8f,0.3f); tb.price=tb.getPrice(400,0.8f); tb.showKind(); System.out.println(getPrice());
} }
抽象类的实际应用
如何在实际应用中定义抽象类?
(1) 提取子类共有的属性 (可选项) (2) 提取子类共有的方法 (可选项) (3) 提取子类共有的方法,但该方法的方法体子类各有
声明抽象方法与抽象类
[权限修饰符] abstract returnType 方法名(paramlist); 说明:(1) 只有方法头部,没有方法体,以“;”结束。 (2) 构造方法不能声明为抽象方法。
例如: public abstract float getArea();
[权限修饰符] ab例
有三类图书:科技书、文艺书和教材。三类书的属性 和方法如下图所示,请用抽象类的方式完成相关代码 的编写。(图书价格=每页价格*页码*折扣)
科技书类 页码 折扣 每页价格
显示种类 显示图书价格
文艺书类 页码 折扣 每页价格
显示种类 显示图书价格
教材类 页码 折扣 每页价格
显示种类 显示图书价格
相关主题