- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 Java中的接口 【本节要点】 Java接口定义 Java接口实现 Java接口回调 为什么引入接口? 我们来看一个类 class A { private int a; public int getA() { return a; } } @这个类的属性是私有的,外界不能访问,而外界可以通过公有方法来访问这个类。我们说一个类的公有方法就是这个类的对外接口。 @一个类的属性都是私有的,方法大多是公有的。外界只能过个这些公有方法来访问类。这也是Java封装性的体现。如果一个类没有公有属性, 也没有公有方法,这个类就是无法使用的类了。所以我们需要为一个类提供对外接口。 关于接口 @接口提供方法声明和方法实现相分离的制,一个接口可以被多个类实现,使多个类之间表现出不同的行为。接口中声明的抽象方法在实现接口的多个类中表现出多态性。 @接口也是一种引用数据类型,声明一个接口I就是定义了一种数据类型,该类型的值集为所有实现接口的类及其子类实例,该类型的所有操作集为接口I中声明的所有方法。 4.1.1 接口的定义 Java中声明接口的语法如下: [public] interface接口名[extends父接口名列表] //可以有多个 { //接口体 //常量域声明 [public] [static] [final] 域类型域名=常量值; …… //抽象方法声明 [public] [abstract] [native] 返回值方法名(参数列表)[throw 异常列表]; …… } 一个类只能有一个父类,但是类可以同时实现若干个接口。这种情况下如果把接口理解成特殊的类,那么这个类利用接口实际上就获得了多个父类,即实现了多重继承。 4.1.1接口定义 @接口是一组抽象方法,常量和内嵌类型的集合。没有具体实现,不能创建实例。 @只是一种规范/声明/标准,没方法,只有被类实现后才有意义。同时,实现接口的非抽象类必须实现所有指定接口中的所有抽象方法。 4.1.1 接口的定义 注意以下几点: (1)在Java中接口是一种专门的类型。用interface关键字定义接口。 (2)接口中只能定义抽象方法,故不能包含构造方法。不能有方法体,所以创建实例。 (3)接口的访问控制权限一定是public修饰的 (3)接口中可以定义变量,但实际上是static final修饰的常量。不能声明实例成员变量。 (4)接口中不能定义静态方法。 实际就是一种供外部访问的公有方法。 4.1.2 接口的实现 例: interface A { int a=1; } interface B { int b=2; public abstract void pp(); } interface MyInterface extends A,B{} //接口的继承,多继承,一个接口可以有多个父接口 abstract class AbstractInterfaceExam implements A,B {} //抽象类实现接口 public class InterfaceExam implements A,B//一般类实现接口 { static InterfaceExam obj = new InterfaceExam(); public static void main(String [] args) { System.out.println(继承接口A中的a= + obj.a); obj.pp(); } public void pp()//实现抽象方法pp() { System.out.println(继承接口AB中的ab= + obj.b); } } 4.1.2 接口的实现 一个类要实现接口时,请注意以下问题: @在类的声明部分,用implements关键字声明该类将要实现哪些接口。 @如果实现某接口的类是非abstract抽象类,则在类的定义部分必须实现所有指定接口中的所有抽象方法,即为所有抽象方法定义方法体,而且方法头部分应该与接口中的定义完全一致,即有完全相同的返回值和参数列表(注意,是方法实现,而不是方法重载)。 4.1.2 接口的实现 @如果实现某接口的的类是abstract的抽象类,则它可以不实现该接口所有的方法。但是对于这个抽象类任何一个非抽象的子类而言,它们父类所实现的接口中的所有抽象方法都必须有实在的方法体。这些方法体可以来自抽象的父类,也可以来自子类自身,但是不允许存在未被实现的接口方法。这主要体现了非抽象类
原创力文档


文档评论(0)