java8以前接口中只能有方法声明,不能有具体实现,java8以后方法可以有具体实现,但必须用static或者default声明
下面声明了一个Fly接口,在static方法中获取了子类的实例,这就实现了面向接口编程了。
package com.xhx.java;/*
* Administrator
* 2018/8/30 11:10
*
*/
public interface Fly {
/**
* java8 接口中可以写静态方法,面向接口变成
* @return
*/
static Fly getInstance(){
return new BirdFly();
}
static Fly getInstance2(){
return new PlanFly();
}
void fly();
/**
* 接口中可以写default方法,如果动态的添加接口中的方法,
* 子类就没必要全部实现了,动态添加api方便
*/
default void wings(){
System.out.println("翅膀");
}
}
这个接口只有default,一会用来测试继承
package com.xhx.java;/*
* Administrator
* 2018/8/30 13:48
*
*/
public interface Other {
default void wings(){
System.out.println("Other翅膀");
}
}
BirdFly类,只实现了Fly接口的fly方法,静态方法和defalut方法继承了下来
package com.xhx.java;/*
* Administrator
* 2018/8/30 11:15
*
*/
class BirdFly implements Fly {
@Override
public void fly() {
System.out.println("鸟飞");
}
}
PlanFly方法实现了Fly与Other接口,其中显示指定了default的wings()方法是哪个父类的
package com.xhx.java;/*
* Administrator
* 2018/8/30 13:44
*
*/
public class PlanFly implements Fly,Other {
@Override
public void fly() {
System.out.println("飞机飞");
}
/**
* 可以重写defalut方法
* 可以显示指定调用哪个
*/
@Override
public void wings() {
Other.super.wings();
}
}
启动类:
package com.xhx.java;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ) {
Fly birdFly = Fly.getInstance();
birdFly.fly();
birdFly.wings();
Fly planFly = Fly.getInstance2();
planFly.fly();
planFly.wings();
}
}
实时内容请关注微信公众号,公众号与博客同时更新:程序员星星