面向对象的高级特性.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象的高级特性

第六章 面向对象的高级特性 6.1.1接口的引入 JAVA的单重继承机制使得程序结构简单清晰,但只靠单重继承机制有时不能解决某些复杂问题。 1.接口的特点: 1)接口使用关键字interface来定义,而不是class 2)接口中定义的变量全部是静态最终变量 3)接口中没有定义构造方法,而且定义的方法都是抽象方法(只提供方法的定义,而不实现) 4)接口采用多重继承机制,而不是类的单重继承机制 2.接口的作用: 1)用来实现类似多重继承功能的一种结构 2)接口是一个标准(约定),是为了规范实现类,因此可以不用管具体实现类如何实现该接口的方法 3.接口的定义: [public] interface 接口名 [extends 父接口1,父接口2,…] { [public static final] type name1 = value; … [public abstract]返回值类型 方法名(形参表) [throws 异常名列表]; } 4.接口的定义举例: public interface Stack { public static final int a = 1; public abstract void push(float a, float b); } public interface Stack { } 1.接口的调用方法: [public] class className implements 接口名 { …. // 接口中方法的具体实现 } 2.实现接口注意点: 1)一个类能实现多个接口,各接口之间用逗号隔开 2)一个接口可以被多个类实现 3)一个类声明实现某个接口后,必须实现该接口的所有方法(包括该接口的所有父接口方法),且被实现的方法和接口定义的方法完全一样! 4)被实现的方法的访问控制符必须显式地使用public 修饰! 举例: 当然,一个接口可以被任意多个类实现,如: 关于接口多重继承时的实现:该类必须实现子接口和其所有父接口所定义的方法 注意:由于一个类实现一个接口时必须实现它的全部方法,所以在对接口进行修改时必须特别小心! 如果新增方法定义void assess();,则会引起所有实现这个接口的类都出错,这时候怎么修改最好? 答案:为原接口定义一个子接口! 接口的定义和类的定义很相似,但是,永远不能用new操作符实例化一个接口,例如: x = new Player(); //错误! 可以声明一个接口变量,并将该变量指向一个实现了该接口的类的对象,例如: Player x = new Myclass(); 可以通过下面语句判断一个对象是否实现了某个接口: if(x instanceof Player) {….} 接口与类相似,通过extends关键字实现继承,但是与类不一样的是,一个接口可以使用多个其他接口的内容。 注意:若两个父接口都有一个具有相同特征的方法(名字相同,参数相同),则它们必须具有相同的返回值类型! 思考:若现在要使用接口修改上次上机的程序:图形与其子类,可以怎么做? class Rectangle extends Graphic implements Shap { float rWidth, rLong; Rectangle(float rw,float rl,float a,float c) { super(a,c); rWidth = rw; rLong = rl; } public float area() { rArea = rWidth*rLong; return rArea; } public float circum() { rCircum = 2*(rWidth+rLong); return rCircum; } } 6.2.1内部类介绍 1.概念:将一个类定义在另一个类内,将此称为内部类,而包含这些内部类的类称为外部类 2.内部类的声明(实例化): OuterClass outer = new OuterClass(); OuterClass.InnerClass obj = o

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档