第04章 面向对象编程_08接口和抽象类.ppt
《第04章 面向对象编程_08接口和抽象类.ppt》由会员分享,可在线阅读,更多相关《第04章 面向对象编程_08接口和抽象类.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 面向对象编程本章主要内容4.1 简介 4.2 面向对象的基本概念 4.3 面向对象的基本语法 4.4 类和包 4.5 对象4.6 继承和多态4.7 接口和抽象类4.8 面向对象开发概念 4.9 总结课程回顾在继承中,一般常见的有那些技术方法的覆盖和重载的区别在继承中,一般常见的有:属性继承,属性隐藏,方法继承,方法覆盖,方法重载等技术方法覆盖1.返回值,参数,函数名完全一致2.函数覆盖的时候,只有子类的函数可以被引用3.一般用在希望完全摒弃父类函数,重写函数代码的情况方法重载1.只有参数不一致的情况下,子类的函数重载父类的函数2.子类和父类的函数是不同的函数,可以被同时引用3.一般用在
2、扩充父类函数功能,同时保留古老的父类函数4.7 接口和抽象类控制复杂性是计算机编程的本质控制复杂性是计算机编程的本质.Brian Kernigan (Unix操作系统的先驱操作系统的先驱)4.7.1 抽象类java语言中,用语言中,用abstract 关键字来修饰一个类时,这个类叫做抽象类关键字来修饰一个类时,这个类叫做抽象类用用abstract 关键字来修饰一个方法时,这个方法叫做抽象方法关键字来修饰一个方法时,这个方法叫做抽象方法格式如下:格式如下:抽象类抽象方法public abstract class abstractClass abstract returnType abstract
3、Method(paramlist);4.7.1 抽象类抽象类声明时采用的语法:抽象类声明时采用的语法:例子:人类是个很典型的抽象类例子:人类是个很典型的抽象类 参看课本例4.18错误的声明方法:错误的声明方法:参看课本例4.19public abstract class Person private String name;public abstract String getDescription();public String getName()return name;Person person=new Person();抽象类抽象方法抽象类是不能实例化对象的修饰符 abstract cla
4、ss 类名4.7.2 抽象方法抽象方法也是由抽象方法也是由abstract修饰,它属于一种不完整的方法,只含有一个声明,没有方法主体。修饰,它属于一种不完整的方法,只含有一个声明,没有方法主体。语法:语法:抽象方法作为抽象类重要的组成部分,它通常描述这各个子类都拥有但又彼此互不相同的方抽象方法作为抽象类重要的组成部分,它通常描述这各个子类都拥有但又彼此互不相同的方法。法。访问修饰符 abstract 返回值类型 方法名();4.7.1 抽象类抽象类不能被实例化抽象类不能被实例化若类中包含了抽象方法,则该类必须被若类中包含了抽象方法,则该类必须被定义为抽象类定义为抽象类public abstra
5、ct class Person private String name;public abstract String getDescription();public String getName()return name;public Person(String n)name=n;public class Employee extends Person private double salary;public Employee(String n,double s)/传递信息到父类构造函数super(n);salary=s;public double getSalary()return sala
6、ry;public String getDescription()return 员工的工资是:+salary;抽象类必须被继承抽象方法必须被重写抽象方法只需声明,无需实现抽象类不一定要包含抽象方法4.7.2 抽象方法例:完整的抽象类实例:例:完整的抽象类实例:参看课本例4.204.7.3 接口接口(接口(Interface)是对符合接口需求的类的一套规范)是对符合接口需求的类的一套规范接口主要作用是可以帮助实现类似于类的多重继承的功能。接口主要作用是可以帮助实现类似于类的多重继承的功能。Java中声明接口的语法如下:中声明接口的语法如下:4.7.3 接口一个一个Java接口是一些方法特征的集合
7、,但没有方法的实现接口是一些方法特征的集合,但没有方法的实现接口是由接口是由常量和和抽象方法组成的特殊类组成的特殊类 参看例4.21publicinterfaceShapepublicabstractdoublearea();publicabstractdoublevolume();publicabstractStringgetName();这是Java接口4.7.3 接口public class Point extends Object implements Shape /返回面积public double area()return 0.0;/返回体积public double volume
8、()return 0.0;/返回类名称public String getName()return Point;Java接口中定义的方法在不同的地方被实现可以具有完全不同的行为 参看课本例4.224.7.3 接口接口的定义接口的定义包括接口声明和接口体接口体包括常量定义和方法定义接口的实现在类的声明中用implements子句来表示一个类使用某个接口在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法一个类可以实现多个接口,在implements子句中用逗号分开接口类型的使用接口作为一种引用类型来使用任何实现该接口的类的实例都可以存储在该接口类型的变量中,通过这些变量可以访问类所实
9、现的接口中的方法接口特性接口可以多重实现接口可以多重实现接口可以继承其它的接口,并添加新的属性和抽象方法接口可以继承其它的接口,并添加新的属性和抽象方法通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。通过接口可以指明多个类需要实现的方法。通过接口可以指明多个类需要实现的方法。通过接口可以了解对象的交互界面,而不需了解对象所对应的类通过接口可以了解对象的交互界面,而不需了解对象所对应的类与继承关系类似,接口与实现类之间存在多态性与继承关系类似,接口与实现类之间存在多态性生活中的接口生活中的接口电脑主板上的
10、PCI插槽的规范就类似于Java接口 声卡声卡显卡显卡网卡网卡每种卡的内部结构都不相同,可以把声卡、网卡、每种卡的内部结构都不相同,可以把声卡、网卡、显卡都插在显卡都插在PCI插槽上,而不用担心哪个插槽是专门插槽上,而不用担心哪个插槽是专门插哪个卡的插哪个卡的主板主板什么是什么是Java接口接口 2-1一个Java接口是一些方法特征的集合,但没有方法的实现publicinterfacePCIpublicvoidstart();publicvoidstop();classSoundCardimplementsPCIpublicvoidstart()System.out.println(Dudu.
11、);publicvoidstop()System.out.println(Soundstop!);Java接口中定义的方法在不同的地方被实现,可以具有完全不同的行为接口中定义的方法在不同的地方被实现,可以具有完全不同的行为这是这是Java接口,相当于主板上接口,相当于主板上的的PCI插槽的规范插槽的规范classNetworkCardimplementsPCIpublicvoidstart()System.out.println(Send.);publicvoidstop()System.out.println(Networkstop!);声卡、网卡都实现了声卡、网卡都实现了PCI插槽的规范,
12、但行为完全不同插槽的规范,但行为完全不同什么是什么是Java接口接口 2-2publicclassAssemblerpublicstaticvoidmain(Stringargs)PCInc=newNetworkCard();PCIsc=newSoundCard();nc.start();sc.start();可以使用可以使用Java接口标识类型接口标识类型运行时,根据实际创建的对象类型调用相应的方法实现运行时,根据实际创建的对象类型调用相应的方法实现Dudu.Send.控制台输出控制台输出21为什么需要为什么需要Java接口接口 5-1为班级开发这样一个小系统,包含类型:学生、老师、打印机,
13、具体要求如下:学生、以及老师都具有方法:输出详细信息老师具有属性:打印机,能够通过老师的打印机打印学生或老师的详细信息系统要具备良好的可扩展性与可维护性打印打印学生学生老师老师老师老师详细信息详细信息学生学生详细信息详细信息detail方法方法(输出详细信息)(输出详细信息)为什么需要为什么需要Java接口接口 5-2以下这个解决方案中存在着什么问题?publicclassStudent1/输出学生的详细信息输出学生的详细信息publicStringdetail()return“本人是本人是学生学生;publicclassTeacher1privatePrinterprinter=newPri
14、nter();/输出老师的详细信息输出老师的详细信息publicStringdetail()return“这里是这里是老老师师;/使用打印机打印学生信息使用打印机打印学生信息publicvoidprint(Students)printer.print(s.detail();/使用打印机打印老师信息使用打印机打印老师信息publicvoidprint(Teachert)printer.print(t.detail();publicclassPrinterpublicvoidprint(Stringcontent)System.out.println(开始打印:开始打印:);System.out.
15、println(content);每增加一种新类型,都需要增加相应的每增加一种新类型,都需要增加相应的print(类型名称类型名称var)方法方法程序的可扩展性及可维护性极差程序的可扩展性及可维护性极差这不符合系统的要求这不符合系统的要求为什么需要为什么需要Java接口接口 5-3可以通过多态性解决这个问题吗?显然,本系统符合使用多态性的条件教员教员中心中心detail方法方法(负责输出详细信息)(负责输出详细信息)学生学生详细信息详细信息老师老师详细信息详细信息1221回顾多态的含义:回顾多态的含义:实现同一个接口,使用不同的实例而执行不同操作实现同一个接口,使用不同的实例而执行不同操作为什
16、么需要为什么需要Java接口接口 5-4在这个系统中,存在继承关系吗?学生、老师属于两种不同的类型,无法通过“is-a”找到一个合适的父类学生、老师都存在一个共同的方法特征:detail,它们对detail方法有各自不同的实现这完全符合Java接口的定义定义一个定义一个Java接口,在其中定义接口,在其中定义detail方法,但没有具体实现方法,但没有具体实现实现这个实现这个Java接口,不同的类对接口,不同的类对detail方法有不同的具体实现方法有不同的具体实现IntroduceableStudent(学生学生)Teacher(老师老师)为什么需要为什么需要Java接口接口 5-5publ
17、icinterfaceIntroduceablepublicabstractStringdetail();publicclassTeacherimplementsIntroduceableprivatePrinterprinter=newPrinter();/输出中心的详细信息输出中心的详细信息publicStringdetail()return“这里是老师这里是老师;/使用中心打印机打印信息使用中心打印机打印信息publicvoidprint(Introduceableintro)printer.print(intro.detail();publicclassStudentimplement
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第04章 面向对象编程_08接口和抽象类 04 面向 对象 编程 _08 接口 抽象
限制150内