程序设计基础第九章_第1页
程序设计基础第九章_第2页
程序设计基础第九章_第3页
程序设计基础第九章_第4页
程序设计基础第九章_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础

-----孔美云本单元内容抽象类的定义抽象类的使用规则接口的格式继承抽象类实现接口接口继承接口的实际应用为抽象类与接口实例化适配器设计抽象类与接口之间的关系抽象类

Java中也可以创建一种类专门用来当作父类,这种类称为“抽象类”。抽象类的作用类似“模板”,其目的是要设计者依据它的格式来修改并创建新的类。但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的类,再由它来创建对象。抽象类抽象类的定义及使用规则如下:包含一个抽象方法的类必须是抽象类。抽象类和抽象方法都要使用abstract关键字声明。抽象方法只需声明而不需要实现。抽象类必须被子继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法。抽象类抽象类的定义格式:abstractclass抽象类名称{

属性;

访问权限返回值类型方法名称(参数){//普通方法[return返回值];}

访问权限abstract返回值类型方法名称(参数);

//抽象方法//在抽象方法中是没有方法体的}抽象类案例:定义一个抽象类abstract

classA{ //是定义了一个抽象类

public

static

finalStringFLAG="CHINA"; //全局常量

privateStringname="李兴华"; //定义一个普通的属性

public

voidsetName(Stringname){

=name; }

publicStringgetName(){

return

; }

public

abstract

voidprint(); //定义抽象方法}抽象类继承抽象类classBextendsA{ //继承抽象类,因为B是普通类,所以必须覆写全部抽象方法

public

voidprint(){ System.out.println("FLAG="+FLAG); System.out.println("姓名

="+super.getName()); }}public

classAbstractDemo02{

public

static

voidmain(Stringargs[]){ Bb=newB(); b.print(); }}子类覆写了抽象方法,然后在主方法中通过子类的实例化对象就可以调用被子类覆写过的方法抽象类抽象类的图形表示抽象类注意:抽象方法不要使用private声明。在使用abstract关键字修饰抽象方法时不能使用private修饰,因为抽象方法必须被子类覆写,而如果使用了private声明,则子类是无法覆写的。.接口接口是Java中最重要的概念之一,它可以被理解为一种特殊的类,是由全局常量和公共的抽象方法所组成。接口的定义格式:

interface接口名称{

全局常量;

抽象方法;}需要注意的是,在接口中的抽象方法必须定义为public访问权限,这是绝对不可改变的。

提示:在接口中如果不写public,则也是public访问权限。接口范例:接口的定义interfaceA{ //定义接口A

public

static

finalStringAUTHOR="李兴华"; //全局常量

public

abstract

voidprint(); //抽象方法

public

abstractStringgetInfo(); //抽象方法}可以简化成:interfaceA{ //定义接口A StringAUTHOR="李兴华"; //等价于:publicstaticfinalStringAUTHOR”李兴华”;

voidprint(); //等价于:publicabstractvoidprint(); StringgetInfo(); //等价于:publicabstractStringgetlnfo();}接口接口图形

与抽象类一样,接口若要使用也必须通过子类,子类通过implements关键字实现接口。接口实现接口的格式:class子类implements接口A,接口B,…{}

一个子类可以同时实现多个接口,那么这实际上就摆脱Java的单继承局限。接口案例:interfaceA{ //定义接口A

publicStringAUTHOR="李兴华"; //全局常量

public

voidprint(); //抽象方法

publicStringgetInfo(); //抽象方法}interfaceB{ //定义接口B

public

voidsay(); //定义抽象方法}classXimplementsA,B{ //X类同时实现A和B两个接口

public

voidsay(){ System.out.println("HelloWorld!!!"); }

publicStringgetInfo(){

return"HELLO"; }

public

voidprint(){ System.out.println("作者:"+AUTHOR); }}一个子类同时实现了两个接口,这样在子类中就必须同时覆写两个接口中的全部抽象方法。接口接口实现的类图接口学生实训:1、定义一个ClassName接口,接口中只有一个抽象方法getClassName();设计一个类Company,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名称;编写应用程序使用Company类。。接口继承抽象类实现接口的格式:class子类extends抽象类implements接口A,接口B,…{}子类同时继承抽象类和实现接口的案例:

interfaceA{ //定义接口A

publicStringAUTHOR="李兴华"; //全局常量

public

voidprint(); //抽象方法

publicStringgetInfo(); //抽象方法}abstract

classB{ //定义抽象类B

public

abstract

voidsay(); //定义抽象方法}接口classXextendsBimplementsA{ //X类线继承B类,再实现A接口

public

voidsay(){ System.out.println("HelloWorld!!!"); }

publicStringgetInfo(){

return"HELLO"; }

public

voidprint(){ System.out.println("作者:"+AUTHOR); }}接口范例:抽象类实现接口:

interfaceA{ //定义接口A

publicStringAUTHOR="李兴华"; //全局常量

public

voidprint(); //抽象方法

publicStringgetInfo(); //抽象方法}abstract

classBimplementsA{ //定义抽象类B,实现接口A

public

abstract

voidsay(); //定义抽象方法}接口接口的继承格式:interface子接口extends父接口A,父接口B,...{}范例:接口的多继承interfaceA{ //定义接口A

publicStringAUTHOR="李兴华"; //全局常量

public

voidprintA(); //抽象方法}interfaceB{

public

voidprintB();}interfaceCextendsA,B{

public

voidprintC();}接口学生实训:

定义Biology(生物),Animal(动物),Man(人)三个接口,其中Biology声明了breath()抽象方法,Animal接口声明了hasSex()和eat()抽象方法,Man接口声明了think()和study()抽象方法。定义NormalMan类实现上述3个接口,实现它们声明的抽象方法(仅显示相应的功能信息)

为抽象类与接口实例化

Java中可以通过对象的多态性为抽象类和接口实例化,这样再使用抽象类和接口时即可调用本子类中所覆写过的方法范例:为抽象类实例化abstract

classA{

public

abstract

voidprint(); }classBextendsA{

public

voidprint(){

System.out.println("HelloWorld!!!"); }};public

classAbstractCaseDemo01{

public

static

voidmain(Stringargs[]){ Aa=newB();

a.print(); }}

为抽象类与接口实例化

范例:为接口实例化interfaceA{

public

abstract

voidprint();};classBimplementsA{

public

voidprint(){ System.out.println("helloworld!"); }};public

classInterfaceCaseDemo01{

public

static

voidmain(String[]args){ Aa=newB(); a.print(); }}程序通过对象的多态性为抽象类及接口进行实例化,这样所调用的方法就是被子类所覆写过的方法。

接口的实际应用——制定标准

接口是Java解决多继承局限的一种手段,而且从前面的内容读者也已经清楚可以通过对象多态性为接口进行实例化,但是接口在实际中更多的作用是用来制订标准。例如,U盘和打印机都可以插在计算机上使用,这是因为它们都实现了USB的接口,对于计算机来说,只要是符合了USB接口标准的设备就都可以插进来。

接口的实际应用——制定标准

范例:制订USB标准interfaceUSB{ //定义了USB接口

public

voidstart(); //USB设备开始工作

public

voidstop(); //USB设备结束工作}classComputer{

public

static

voidplugin(USBusb){ //电脑上可以插入USB设备

usb.start(); System.out.println("===========USB设备工作========"); usb.stop(); }};

接口的实际应用——制定标准

classFlashimplementsUSB{

public

voidstart(){ //覆写方法

System.out.println("U盘开始工作。"); }

public

voidstop(){ //覆写方法

System.out.println("U盘停止工作。"); }};classPrintimplementsUSB{

public

voidstart(){ //覆写方法

System.out.println("打印机开始工作。"); }

public

voidstop(){ //覆写方法

System.out.println("打印机停止工作。"); }};

接口的实际应用——制定标准

classFlashimplementsUSB{

public

voidstart(){ //覆写方法

System.out.println("U盘开始工作。"); }

public

voidstop(){ //覆写方法

System.out.println("U盘停止工作。"); }};classPrintimplementsUSB{

public

voidstart(){ //覆写方法

System.out.println("打印机开始工作。"); }

public

voidstop(){ //覆写方法

System.out.println("打印机停止工作。"); }};public

classInterfaceCaseDemo02{

public

static

voidmain(Stringargs[]){ Computer.plugin(newFlash()); Computer.plugin(newPrint()); }}接口就是规定出了一个标准,计算机认的只是接口,而对于具体的设备计算机本身并不关心。

接口的实际应用——制定标准

学生实训:模拟主板上的PCI插槽实训内容:主板上的PCI插槽就是现实中的接口你可以把声卡,显卡,网卡都插在PCI插槽上,而不用担心那个插槽是专门插哪个的原因是做主板的厂家和做各种卡的厂家都遵守了统一的规定包括尺寸,排线等等但是各种卡的内部结构是一样的么?

设计模式——适配器设计

一个类要实现一个接口,则必须要覆写此接口中的全部抽象方法,那么如果此时一个接口中定义的抽象方法过多,但是在子类中又用不到这么多抽象方法,则肯定很麻烦,所以此时就需要一个中间的过渡,但是此过渡类又不希望被直接使用,所以将此过渡类定义成抽象类最合适,即一个接口首先被一个抽象类先实现(此抽象类通常称为适配器类),并在此抽象类中实现若干方法(方法体为空),则以后的子类直接继承此抽象类,就可以有选择地覆写所需要的方法。

设计模式——适配器设计

设计模式——适配器设计

范例:适配器设计实现interfaceWindow{ //定义Window接口,表示窗口操作

public

voidopen(); //打开

public

voidclose(); //关闭

public

voidactivated(); //窗口活动

public

voidiconified(); //窗

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论