什么是接口?如何定义接口?如何实现接口?

在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

如用关键字interface,你可以从类的实现中抽象一个类的接口。也就是说,用interface,你可以指定一个类必须做什么,而不是规定它如何去做。

接口在语句构成上与类相似,但是它们缺少实例变量,而且它们定义的方法是不含方法体的。实际上,这意味着你可以定义不用假设它们怎样实现的接口。一旦接口被定义,任何类成员可以实现一个接口。而且,一个类可以实现多个接口。

要实现一个接口,接口定义的类必须创建完整的一套方法。然而,每个类都可以自由的决定它们自己实现的细节。通过提供interface关键字,Java允许你充分利用多态性的“一个接口,多个方法”。

接口是为支持运行时动态方法解决而设计的。通常,为使一个方法可以在类间调用,两个类都必须出现在编译时间里,以便Java编译器可以检查以确保方法特殊是兼容的。这个需求导致了一个静态的不可扩展的类环境。

在一个系统中不可避免会出现这类情况,函数在类层次中越堆越高以致该机制可以为越来越多的子类可用。接口的设计避免了这个问题。它们把方法或方法系列的定义从类层次中分开。因为接口是在和类不同的层次中,与类层次无关的类实现相同的接口是可行的。这是实现接口的真正原因所在。

接口定义
接口定义很像类定义。下面是一个接口的通用形式:

access interface name { 
 return-type method-name1(parameter-list); 
 return-type method-name2(parameter-list); 
 type final-varname1 = value; 
 type final-varname2 = value; 
 // ... 
 return-type method-nameN(parameter-list); 
 type final-varnameN = value; 
}

这里,access要么是public,要么就没有用修饰符。当没有访问修饰符时,则是默认访问范围,而接口是包中定义的惟一的可以用于其他成员的东西。

当它声明为public时,则接口可以被任何代码使用。name是接口名,它可以是任何合法的标识符。注意定义的方法没有方法体。它们以参数列表后面的分号作为结束。

它们本质上是抽象方法;在接口中指定的方法没有默认的实现。每个包含接口的类必需实现所有的方法。

接口声明中可以声明变量。它们一般是final 和static型的,意思是它们的值不能通过实现类而改变。它们还必须以常量值初始化。

如果接口本身定义成public ,所有方法和变量都是public的。

下面是一个接口定义的例子。它声明了一个简单的接口,该接口包含一个带单个整型参数的callback( )方法。

interface Callback { 
 void callback(int param); 
}

实现接口

一旦接口被定义,一个或多个类可以实现该接口。为实现一个接口,在类定义中包括implements 子句,然后创建接口定义的方法。一个包括implements 子句的类的一般形式如下:

access class classname [extends superclass] 
 [implements interface [,interface...]] { 
 // class-body 
}

这里,access要么是public的,要么是没有修饰符的。如果一个类实现多个接口,这些接口被逗号分隔。如果一个类实现两个声明了同样方法的接口,那么相同的方法将被其中任一个接口客户使用。实现接口的方法必须声明成public。而且,实现方法的类型必须严格与接口定义中指定的类型相匹配。

下面是一个小的实现Callback接口的例子程序:

class Client implements Callback { 
 // Implement Callback's interface 
 public void callback(int p) { 
 System.out.println("callback called with " + p); 
 } 
}

注意callback( )用public 访问修饰符声明。
注意:当实现一个接口方法时,它必须声明成public。

类在实现接口时定义它自己的附加的成员,既是允许的,也是常见的。例如,下面的Client版本实现了callback( )方法,并且增加了nonIfaceMeth( )方法。

class Client implements Callback { 
 // Implement Callback’s interface 
 public void callback(int p) { 
 System.out.println(“callback called with “ + p); 
 } 
 void nonIfaceMeth() { 
 System.out.println(“Classes that implement interfaces “ + 
 “may also define other members, too.); 
 } 
}

开课吧小编:接口分享就结束了,下一篇分享通过接口引用实现接口,希望大家能够喜欢。

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值