java8 接口新特征default/static

介绍Java8接口的新特性,在Java8以前接口中只有方法声明,之后方法可有具体实现,但需用static或default声明。还通过Fly接口等示例,展示了static方法获取子类实例实现面向接口编程,以及default方法在继承和多接口实现中的使用。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值