- 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类和对象高级特征.ppt
JAVA类和对象高级特征 接口 内部类 JAVA中的文档注释 4.1、接口 C++的多继承中的问题:二义性 (1)两个基类具有同名的成员。如: class Base1 { public: void fun(){} } ; class Base2 { public: void fun(){} } ; class Derived: public Base1,public Base2 { } ; int main(){ Derived obj; obj.fun(); //将产生二义性 } (2)派生类继承的多个基类拥有同一个基类(祖先类),则对其共同的基类(祖先类)成员访问时会有二义性。 class Base{public: int data;}; class Derived11:public Base{ }; class Derived12:public Base{ }; class Derived2:public Derived11, public Derived12 { } ; int main(){ Derived2 obj; obj.data=1; //产生二义性 } JAVA单继承的问题 (1) JAVA的单继承,它的类层次结构是树状结构。有时对处理复杂问题会力不从心; (2) 随着类结构树的增长,越是处在下层的子类,它的间接父类(祖先类)越多,所继承的方法也会越来越多,造成子类成员的膨胀、庞杂,难以管理和掌握。 解决问题的思路: 采用多继承方案,但同时又没有C++多继承的二义性问题。 (1) 把用于完成特点功能的若干属性组织成相对独立的属性集合;凡是需要实现这种特点功能的类,都可以继承这个属性集合,并在类内使用它,这种属性集合就是接口。 (2)接口定义的仅仅是实现某一特定功能的一组功能的对外接口和规范,而并没有真正实现这一功能。(抽象方法) (3) JAVA中的一个类获取某一接口定义的功能,并不是通过直接继承这个接口中的属性和方法来实现。因为接口中并没有真正的实现,因此需要在JAVA类中具体定义各抽象方法的方法体。JAVA中把对接口功能的“继承”称为“实现”。 某游戏类继承关系局部 2、定义接口 Java中声明接口的语法如下: [public] interface 接口名 [extends 父接口名列表] { //接口体; //常量域声明 [public] [static] [final] 域类型 域名=常量值; //抽象方法声明 [public] [abstract] [native] 返回值 方法名(参数列表) [throw异常列表]; } 从上面的语法规定可以看出,定义接口与定义类非常相似,实际上完全可以把接口理解成为一种特殊的类,接口是由常量和抽象方法组成的特殊类。 接口也可以有自己的父类,这时要用到extends关键字。 接口与类的区别 (1)接口中不能定义成员变量,只能定义成员常量。 (2) 接口中的成员方法或称成员函数只能有声明,既只能定义方法名、返回类型、参数以及访问控制修饰(Public或Private或Protected),不能有大括号以及其中的内容,也就是说不能有实现方法的任何代码。 (3)接口可以继承多个接口类,也就是说一个接口类可以有多个类型为接口的父类。 (4)接口与前面所讲的final类恰恰相反,接口类必须被继承并实现,如果其子类没有完全实现该接口所定义的方法,那么该子类必须定义为抽象类。 (5)接口类的子类除实现该接口类之外,还可以实现其它的接口类。 3、实现接口 (1)在类的声明部分,用implements关键字声明该类将要实现哪些接口; (2)如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须实现指定接口的所有抽象方法,即为所有抽象方法定义方法体,而且方法头部分应该与接口中的定义完全一致,即有完全相同的返回值和参数列表; (3)如果实现某接口的类是abstract的抽象类,则它可以不实现该接口所有的方法。 (4)一个类在实现某接口的抽象方法时,必须使用完全相同的方法头。 (5)接口的抽象方法,其访问限制符都已指定是public,所以类在实现方法时,必须显式地使用public修饰符。 例子4.1 接口的实现 P89 source\ex4\sources\1\ Work.java Manage.java Sale.java 4、接口回调 接口回调是指可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口
文档评论(0)