java8对接口实现了一定的升级。
1接口的定义
access interface name
{
ret-type method-name (param-list);
typa var1=value;
}
这里access 可以是public要么是默认的包访问方式。当声明为public是必须位于同名的文件中。
方法隐含为public。变量隐含为public ,staic,final
接口的实现,继承
在类里面用implements来对接口实现。接口的继承是extends。
默认接口方法(新)
java8开始可以在接口中加默认的实现。只需要在方法前加入default关键字
public interface MyIF
{
default int fetAdminID()
{
return 1;
}
}
多继承问题
由于现在接口有默认的实现。如果一个类实现的多个接口里面有重名的默认实现那么就会产生多继承问题。
“`java
interface Alpha
{
default void reset()
{
System.out.print(“alpha”);
return;
}
}
interface Beta extends Alpha
{
default void reset()
{
System.out.print(“Beta”);
return;
}
}
class MyClass implements Alpha,Beta
{
}
““
在这段代码中,MyClass中的reset方法是Alpha中的还是Beta中的呢?java有如下规则
在所有情况下,类的实现都是优先于接口的默认实现。如果MyClass中实现了reset()那么久用类里面的实现
如果类没有对冲突的默认方法提供实现那么报错
如果一个接口继承了另一个接口这样产生的冲突,那么继承接口有高优先级。在接口Beta里面可以使用一种方式访问Alpha的接口Alpha.super.reset();[interfacename.super.methodName()]
在接口中使用静态方法
接口里面的方法可以用static修饰。但是要主要的是接口里面的静态方法不能被实现类继承,也不能被子接口继承。