- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java类的高级特性的
Java语言类的高级特性 类的高级特性---抽象方法 学习目标 重点: 抽象类,接口。 界面设计的事件监听机制 了解匿名内部类 难点: 接口与抽象类区别; 匿名内部类的语法理解 抽象类 抽象类的规则 抽象类不能实例化,也就是不能创建抽象类的对象。 抽象类可以包含普通的方法。 抽象类存在的价值 抽象类一般被设计为基类,然后从抽象类基础上派生具体的类。 抽象类中定义了基本的成员函数,函数名称、参数、返回值等。 没有具体实现函数的细节。从抽象类继承的具体子类再对父类进行函数覆盖,从而实现了行为的多样性。 抽象类的核心价值 抽象类实质上对各子类行为提供一个统一的规定。 OCP(Open-Closed Principle),抽象类是其中的关键。 类的高级特性---接口 学习目标 学习重点: 接口的基本语法;并会简单应用。理解接口的意义。 学习难点:接口的意义;接口与抽象类的区别。 自学任务:设计模式中的开闭法则与接口分离法则。 接口为何而来? C++多重继承 class 子类名: 父类1,父类2…,父类n { } Java是个单根继承的语言。 class 子类名 extends 父类名 { } Java 多重继承如何实现呢? 初识接口 public interface DataInput { public abstract Boolean readBoolean(); public abstract byte readByte(); public abstract double readChar(); } 接口的概念 函数(方法)特征的集合。 或者说是一组函数(方法)的声明。 接口的语法 1 接口的声明: interface 接口名称 [extends 父接口名] { 接口体; } 接口体:只能由final的常量与public抽象方法组成。 接口的语法 2 接口的实现:implements class 类名 extends 父类 implements 接口名 { } 具体的例子 interface canfly{ public abstract void fly (); } class actor extends human implements canfly { public void fly(){ 具体算法实现; } ….; } 接口的意义 从一个问题出发: 在现实领域有个抽象概念 “门” ,有两种基本行为:“开”、“关”。需求是为门增加一个“报警”功能。 如何设计呢??? 方案一: 直率人的思路: 门设计为一个抽象类,有两个基本成员方法。再为其增加一个报警功能,添加一个方法Alarm()。 方案一: 直率人的代码: abstract class Door { abstract void open(); abstract void close(); abstract void alarm(); } 方案一的反思: ,在Door的定义中把Door的概念和另外一个概念“报警器”的行为方法混在了一起。 “多角色的混合”,扮演的“角色”越多,人的职责越多。“妈妈”+“老师”。 接口分离原则:ISP(Interface Segregation Principle)或者“角色分离”法则。 方案一的反思: 如果这样的事情发生: 项目经理通知你客户的需求改变了!需要为报警增加一个时间。 alarm() 要求一个报警时间的参数。 可怕的事情发生了 方案二---智者的决定 角色分割思想: 将“门”和“报警”做为两个抽象概念来对待,实现分离。 门用抽象类来实现,而“报警器”用接口来实现。 方案二---智者的决定 abstract class Door { abstract void open(); abstract void close(); } interface Alarm { void alarm(); } 对接口的深入理解 接口:函数(方法)的声明与实现分离。 接口:只是定义了函数(方法); 实现接口的类:真正实现了这些函数(方法)。 对接口的深入理解 接口:规定了“角色”的行为或者职责。 实现接口的类: 履行这些职责。 class AlarmDoor extends Door implements Alarm { void open() { … } void close() { … } void alarm() { … } } 一个开心的例子---just a joke clas
文档评论(0)