java类的高级特性_第1页
java类的高级特性_第2页
java类的高级特性_第3页
java类的高级特性_第4页
java类的高级特性_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、Java语言类的高级特性1类的高级特性-抽象方法1 抽象方法: 没有方法体的方法,前面要加关键词Abstract ,方法体退化为分号。比如:Abstract 返回类型 方法名(参数列表);2学习目标重点:抽象类,接口。 界面设计的事件监听机制了解匿名内部类难点:接口与抽象类区别;匿名内部类的语法理解3 抽象类包含抽象方法的类必须是个抽象类,前面要加关键词abstract .比如:abstract class classa abstract void int sum( int var1, int var2);4抽象类的规则抽象类不能实例化,也就是不能创建抽象类的对象。抽象类可以包含普通的方法。5

2、抽象类存在的价值抽象类一般被设计为基类,然后从抽象类基础上派生具体的类。抽象类中定义了基本的成员函数,函数名称、参数、返回值等。没有具体实现函数的细节。从抽象类继承的具体子类再对父类进行函数覆盖,从而实现了行为的多样性。6飞行捕食捕食飞行捕食游水飞行7抽象类的核心价值抽象类实质上对各子类行为提供一个统一的规定。OCP(Open-Closed Principle),抽象类是其中的关键。8如果一个类中全是抽象方法,可以用另一种机制实现这种抽象类。这就是接口。9类的高级特性-接口10学习目标学习重点: 接口的基本语法;并会简单应用。理解接口的意义。学习难点:接口的意义;接口与抽象类的区别。自学任务:

3、设计模式中的开闭法则与接口分离法则。11接口为何而来?C+多重继承 class 子类名: 父类1,父类2,父类n Java是个单根继承的语言。 class 子类名 extends 父类名 Java 多重继承如何实现呢? 12初识接口public interface DataInput public abstract Boolean readBoolean(); public abstract byte readByte(); public abstract double readChar();思考:你对接口的第一印象是什么?它象谁呢? 13接口的概念函数(方法)特征的集合。或者说是一组函数(方

4、法)的声明。编译器角度: 函数特征是什么?名字参数的数目参数的类型不包括:返回类型,参数的名字以及所抛出来的异常。14接口的语法1 接口的声明:interface 接口名称 extends 父接口名 接口体; 接口体:只能由final的常量与public抽象方法组成。 15接口的语法2 接口的实现:implements class 类名 extends 父类 implements 接口名 16具体的例子 interface canflypublic abstract void fly ();class actor extends human implements canfly public v

5、oid fly() 具体算法实现; .;17接口的意义从一个问题出发: 在现实领域有个抽象概念 “门” ,有两种基本行为:“开”、“关”。需求是为门增加一个“报警”功能。 如何设计呢?18方案一:直率人的思路: 门设计为一个抽象类,有两个基本成员方法。再为其增加一个报警功能,添加一个方法Alarm()。 19方案一:直率人的代码: abstract class Door abstract void open(); abstract void close(); abstract void alarm(); 20方案一的反思:,在Door的定义中把Door的概念和另外一个概念“报警器”的行为方法混

6、在了一起。 “多角色的混合”,扮演的“角色”越多,人的职责越多。“妈妈”+“老师”。接口分离原则:ISP(Interface Segregation Principle)或者“角色分离”法则。21方案一的反思:如果这样的事情发生:项目经理通知你客户的需求改变了!需要为报警增加一个时间。 alarm() 要求一个报警时间的参数。22可怕的事情发生了Alarm(time)23方案二-智者的决定角色分割思想: 将“门”和“报警”做为两个抽象概念来对待,实现分离。 门用抽象类来实现,而“报警器”用接口来实现。 24方案二-智者的决定abstract class Door abstract void o

7、pen();abstract void close(); interface Alarm void alarm();class AlarmDoor extends Door implements Alarm void open() void close() void alarm() 25对接口的深入理解接口:函数(方法)的声明与实现分离。接口:只是定义了函数(方法);实现接口的类:真正实现了这些函数(方法)。接口:是电影中的 “角色”,比如角色 警察、小偷;实现接口的类:是 “演员”,一个演员可以扮演各种“角色”。 26对接口的深入理解接口:规定了“角色”的行为或者职责。实现接口的类: 履行这

8、些职责。class AlarmDoor extends Door implements Alarm void open() void close() void alarm() 27一个开心的例子-just a jokeclass ehotcup implements Alarm void hot() . void stop() void alarm() .我们家的电热杯也成了“警卫员”了28抽象类 vs 接口抽象类 :软件模式中“OCP原则”(开闭原则) 的基础。抽象类,抽象类实现的是类型的隐藏,让人忘记具体的类型,让软件依赖抽象类后,增加了软件的可扩充性。 终极目标: “旧代码调用新代码”。 29抽象类 vs 接口接口没有反映“继承”思想,但确实是达到多重继承的一种方法。接口比抽象类更“抽象”(为什么?)提倡使用“接口”-interface30抽象类 vs 接口-接口的缺点31课下的工作抽象类,抽象方法。教材69,76。java编程思想p230; 接口 p116-p120 ;调试、体会例题程序;自学指导:java与模式第8章实验任务:调试教材程序,用心体会接口存在的意义;作业:比较接口和抽象类的相同、不同处(300字,小小论文)32类的高级特性内部类嵌套类。在类内部定义的类。(不要在名字方面在意,知道咋回事就行)3

温馨提示

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

评论

0/150

提交评论