0
点赞
收藏
分享

微信扫一扫

java8 接口新特征default/static


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();
}
}

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

java8 接口新特征default/static_接口default方法

举报

相关推荐

0 条评论