- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java语言程序设计基础篇ch10-抽象类和接口
接口的定义示例 接口中的方法通过“接口类型的引用变量.方法名”访问,但接口类型的引用变量必须指向实现了该接口的类的实例对象 接口中的常量名通过“接口名.常量名”访问。 接口示例 Comparable接口 有时需要比较二个对象,但不同类型对象的比较具有不同的含义,因此Java定义了Comparable接口。 因此,任何需要比较对象的类,都要实现该接口。 该接口定义如下: package java.lang; public interface Comparable{ public int CompareTo(Object o); } CompareTo判断这个对象相对于给定对象的顺序,当这个对象小于、等于或大于给定对象o时,分别返回负数、0或正数 Comparable接口 有了Comparable接口,我们可以实现很通用的类来比较对象,例如实现一个从两个对象中找出最大者的方法。 注意max方法的参数类型和返回类型都是Comparable 实现了Comparable接口的对象可以有自己的具体实现,但Max.max与这些对象的具体实现无关。这就是接口的好处。 另外要注意的是:o1.CompareTo(o2)调用是动态绑定(多态) 实现可比较的Rectangel类 对于ComparableRectangle的两个对象r1和r2,我们直接调用Max.max(r1,r2)找出最大的对象 对于实现了Comparable接口任何类的二个对象(不管其具体实现是什么)a1和a2,我们都可以调用Max.max(a1,a2)找出最大的对象 Cloneable接口 Java定义了Cloneable接口,任何想实现克隆功能的类必须实现该接口,同时改写从Object类继承的clone方法,并将访问属性改为public 但Cloneable接口为空接口,其定义为 package java.lang; public interface Cloneable { } 空接口称为标记接口(markup interface) 空接口有什么作用?唯一目的允许你用instanceof检查对象的类型: if(obj instanceof Cloneable)… 例CloneTest.java Java程序设计 第10章 抽象类和接口 学习目标 设计和使用抽象类 掌握接口的声明和实现 了解抽象类和接口的异同 掌握基本数据类型的包装类型 了解JDK1.5中基本数据类型与包装类型的自动转换 抽象类和抽象方法 类的层次结构中,越往下继承的子类其属性和方法越来越具体。相反,越上层的祖先类其实现越抽象,甚至无法给出具体实现。例如,一个几何图形有面积,但祖先类的getArea()方法没法给出具体实现,这时可以定义为抽象方法。 Java中可以定义不含方法体的方法,方法的方法体由该类的子类根据自己的情况去实现,这样的方法称为抽象方法(abstract method),包含抽象方法的类必须是抽象类(abstract class)。 抽象类和抽象方法的声明要加上abstract关键字 抽象类示例 Circle - radius : double + + + + + Override Override getRadius () setRadius (double radius) getArea () getPerimeter () toString () : double : void : double : double : String GeometricObject - - color filled : String : boolean + + + + + + getColor () setColor (String color) isFilled () setFilled (boolean filled) getArea () getPerimeter () : String : void : boolean : void : double : double Rectangle - - width height : double : double + + + + + + + Override Override getWidth () setWidth (double width) getHeight () setHeight (double height) getArea () getPerimeter () toString () : double : void : double : void : double : double : String Override Override Example:Geometr
文档评论(0)