在JDK 1.7及更老的版本中,接口中只能包含常量与抽象方法两种内容,
不允许包含其他。但是这种情况在JDK 1.8中已经改变:接口中允许包含default方法和static方法并指定方法体的具体实现
我们可以采用接口去实现多态性质
@FunctionalInterface
public interface Phone {
//拨打电话
void call();
}
public class IPhone implements Phone
{
@Override
public void call() {
System.out.println("FACE TIME");
}
}
public class Gralxy implements Phone {
@Override
public void call() {
System.out.println("call me");
}
}
public class ExampleTest {
public static void main(String[] args) {
usePhone(new IPhone() );
usePhone( new Gralxy());
}
private static void usePhone(Phone phone){
try {
phone.call();
} catch (Exception e) {
e.printStackTrace();
}
}
}
接口升级 给每一个iphone再增加一个视频的功能
1.传统方法 在Phone接口中增加一个视频方法 然后实现类再去实现
2.采用Java8方式 Java8中允许接口中存在默认方法 即default修饰的方法
或者静态方法
@FunctionalInterface
public interface Phone {
//拨打电话
void call();
static void video(){
System.out.println("视频聊天");
}
}
总结:Java8的默认方法为我们在某些特定场景 解决了很多方法
网友评论