第三章-抽象类与接口课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第三章-抽象类与接口课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 抽象 接口 课件
- 资源描述:
-
1、 抽象类与接口本章内容1.抽象类的概念、定义与应用抽象类的概念、定义与应用2.接口的概念、定义与应用接口的概念、定义与应用 介绍几种常见的设计模式介绍几种常见的设计模式3.抽象类与接口的比较抽象类与接口的比较 相同点相同点 不同点不同点抽象类 包含有包含有至少一个至少一个抽象方法的类称为抽象类,抽象方法的类称为抽象类,用用abstract关键字修饰,关键字修饰,不能创建自己的对不能创建自己的对象象,抽象方法交由子类去覆盖,抽象方法交由子类去覆盖(完成方法体完成方法体)。抽象方法:抽象方法:只有方法的头部,没有方法体只有方法的头部,没有方法体。在继承抽象类的子类中来在继承抽象类的子类中来实现父类
2、中的所有实现父类中的所有抽象方法抽象方法(完成方法体部分完成方法体部分)。声明抽象方法与抽象类声明抽象方法与抽象类权限修饰符权限修饰符 abstract returnType 方法名方法名(paramlist);说明说明:(1)只有方法头部,没有方法体,以只有方法头部,没有方法体,以“;”结束。结束。(2)构造方法不能声明为抽象方法。构造方法不能声明为抽象方法。例如:例如:public abstract float getArea();权限修饰符权限修饰符 abstract class 类名称类名称 成员属性成员属性;方法()方法();/定义一般方法定义一般方法 构造方法构造方法();abst
3、ract 方法()方法();/定义抽象方法定义抽象方法 抽象类的作用 抽象类本身不能实例化,而抽象类的子类实现抽象类本身不能实例化,而抽象类的子类实现了抽象类的抽象方法了抽象类的抽象方法,因此通常都是定义抽象,因此通常都是定义抽象类的引用指向子类的实例,自动完成向上转型类的引用指向子类的实例,自动完成向上转型,是对象多态性的一个很好体现。是对象多态性的一个很好体现。AbstractClass ac=new AbstractClassImp();抽象类应用举例有三类图书:科技书、文艺书和教材。三类书的属性有三类图书:科技书、文艺书和教材。三类书的属性和方法如下图所示,请用抽象类的方式完成相关代码
4、和方法如下图所示,请用抽象类的方式完成相关代码的编写。的编写。(图书价格图书价格=每页价格每页价格*页码页码*折扣折扣)文艺书类 页码 折扣 每页价格显示种类显示图书价格 科技书类 页码 折扣 每页价格显示种类显示图书价格 教材类 页码 折扣 每页价格显示种类显示图书价格/定义抽象类定义抽象类Bookabstract class Book int bookPage;float discount;float pagePrice;/定义三个成员属性定义三个成员属性 public Book(int bookPage,float discount,float pagePrice)this.bookPa
5、ge=bookPage;this.discount=discount;this.pagePrice=pagePrice;abstract void showKind();/显示图书种类显示图书种类 public float getPrice()return bookPage*discount*pagePrice;class ScienceBook extends Book/定义科技书定义科技书 public ScienceBook(int bookPage,float discount,float pagePrice)super(bookPage,discount,pagePrice);pub
6、lic void showKind()/实现抽象方法实现抽象方法 System.out.println(The books type is science);class ArtBook extends Book/定义文艺书定义文艺书 public ArtBook(int bookPage,float discount,float pagePrice)super(bookPage,discount,pagePrice);public void showKind()/实现抽象方法实现抽象方法 System.out.println(The books type is art);public clas
7、s BookTest public static void main(String args)Book sb=new ScienceBook(520,0.7f,0.2f);sb.showKind();System.out.println(getPrice();Book tb=new ArtBook(400,0.8f,0.3f);tb.price=tb.getPrice(400,0.8f);tb.showKind();System.out.println(getPrice();抽象类的实际应用如何在实际应用中定义抽象类如何在实际应用中定义抽象类?(1)提取子类共有的属性提取子类共有的属性(可选项
8、可选项)(2)提取子类共有的方法提取子类共有的方法(可选项可选项)(3)提取子类共有的方法,但该方法的方法体子类各有提取子类共有的方法,但该方法的方法体子类各有不同,则此方法定义为抽象方法。不同,则此方法定义为抽象方法。(必须项必须项)练习练习:学生有姓名、年龄和成绩属性;教师有姓名、年学生有姓名、年龄和成绩属性;教师有姓名、年龄和职称属性;学生和教师都能讲话,但所讲的内龄和职称属性;学生和教师都能讲话,但所讲的内容不同。采用抽象类的方式完成上述代码的编写。容不同。采用抽象类的方式完成上述代码的编写。接口的定义现实世界的接口:现实世界的接口:两个不同物体之间相互交互所必须通过的一个中介,没有这
9、两个不同物体之间相互交互所必须通过的一个中介,没有这个中介,两者无法交互。个中介,两者无法交互。软件世界的接口:软件世界的接口:(1)(1)狭义:某个程序设计语言所提供的狭义:某个程序设计语言所提供的APIAPI。(2)(2)广义:人与软件交互的图形界面广义:人与软件交互的图形界面(GUI)(GUI)。JavaJava中的接口:中的接口:一种特殊的一种特殊的“类类”,只能包含,只能包含常量常量和和抽象方法抽象方法,属于引用数,属于引用数据类型。据类型。接口的作用接口的作用 为什么要定义接口:为什么要定义接口:JavaJava出于安全性考虑,出于安全性考虑,只支持单重继承只支持单重继承,而不支持
10、多重继承。,而不支持多重继承。多重继承更能表达现实世界。多重继承更能表达现实世界。接口的作用:接口的作用:配合继承解决配合继承解决JavaJava无法多继承的缺点,提供方法声明无法多继承的缺点,提供方法声明与实现相分离的机制,与实现相分离的机制,使实现接口的各个类表现出多使实现接口的各个类表现出多态性态性。A A a=new a=new B B();();(B(B是实现了接口是实现了接口A A的类的类)接口的定义一个接口的定义包含以下部分:一个接口的定义包含以下部分:public interface MyInterface extends Interface1 public static fi
11、nal double E=2.718282;public abstract void doSomething(int i,double x);public abstract int doSomethingElse(String s);访问控制符访问控制符接口关键字接口关键字接口名接口名接口可以继承接口接口可以继承接口接口中可以定义常量接口中可以定义常量抽象方法,只声明不实现抽象方法,只声明不实现接口的实现接口的实现是交给类来完成的。接口的实现是交给类来完成的。public class MyInterfaceImp extends 父类名父类名 implements 接口名接口名 继承了接口中的
12、常量继承了接口中的常量 public void doSomething(int i,double x)public int doSomethingElse(String s)一个类可以实现多个接口一个类可以实现多个接口实现接口的抽象方法,添加方法体实现接口的抽象方法,添加方法体接口的简单应用定义一个测试类,分别创建圆形类和矩形类的对象,定义一个测试类,分别创建圆形类和矩形类的对象,输出各自的面积和周长。输出各自的面积和周长。接口的高级应用接口的高级应用-设计模式设计模式 设计模式针对面向对象系设计模式针对面向对象系统中重复出现的设计问题,提统中重复出现的设计问题,提出一个通用的设计方案,并予出
13、一个通用的设计方案,并予以系统化的命名和动机解释。以系统化的命名和动机解释。设计模式描述了问题、解决方设计模式描述了问题、解决方案、在什么条件下使用该解决案、在什么条件下使用该解决方案及其效果。方案及其效果。解决方案是解决该问题的解决方案是解决该问题的一组精心安排的通用的类和接一组精心安排的通用的类和接口口,再经过定制和实现就可用,再经过定制和实现就可用来解决特定上下文中的问题。来解决特定上下文中的问题。代理模式应用的场景应用的场景:一个对象不想或者不能直接引用另外一个对象,那么通过代:一个对象不想或者不能直接引用另外一个对象,那么通过代理可以在两者之间起到连接作用。理可以在两者之间起到连接作
14、用。(1)(1)抽象目标角色抽象目标角色:声明真实目标对象和代理的共同接口。:声明真实目标对象和代理的共同接口。(2)(2)代理角色:代理角色:内部包含对真实目标对象的引用。内部包含对真实目标对象的引用。(3)(3)真实目标角色:真实目标角色:是客户端真正要交流的对象,需要被代理。是客户端真正要交流的对象,需要被代理。适配器模式使用场景使用场景:将一个类的接口:将一个类的接口(被适配对象被适配对象)转换成客户希望调用转换成客户希望调用的另外一个接口的另外一个接口(目标目标)。适配器模式模式的三种角色:模式的三种角色:目标目标(Target):(Target):客户想使用的接口。客户想使用的接口
15、。被适配者被适配者(Adaptee):(Adaptee):一个已经存在的接口或抽象类,需要被适配。一个已经存在的接口或抽象类,需要被适配。适配器适配器(Adapter):(Adapter):是一个类,实现目标接口并包含被适配者的引用。是一个类,实现目标接口并包含被适配者的引用。接口的特点接口的特点(1)(1)接口可以定义为多继承。接口可以定义为多继承。类不能多继承。类不能多继承。interface A double getArea();interface B String getName();public interface C extends A,B String getAddress();
展开阅读全文