JDK8接口的默认方法和静态方法

众所周知,在接口中定义的普通方法都是抽象方法,方法前面默认都hu会添加public abstract,不能有方法的实现,需要在接口的实现类中对方法进行具体实现。
定义接口

public interface MyInterface{
	String abstractMethod();
}

接口的实现类

public class MyInterfaceImpl implements MyInterface{
	public String abstractMethod(){
		return "execute abstract method";
	}
}

但是jdk8开始允许在接口中定义默认方法和静态方法,对于这两种方法,可以直接在接口对其进行实现,无需在接口的实现类中进行实现。
默认方法:扩展方法,在方法前面通过default修饰。不能直接通过接口调用,必须通过接口实现类的实例对象进行方法调用
接口实现类对象.默认方法()
静态方法:类方法,在方法前面需要通过static修饰。可以直接通过接口调用
j接口.静态方法()
方法定义

public interface MyInterface1{
	//抽象方法
	String abstractMethod();
	//默认方法
	default String defaultMethod(){
		return "MyInterface1---->defaultMethod";
	}
	//静态方法
	static String staticMethod(){
		return "MyInterface1---->staticMethod";
	}
}
public interface MyInterface1Impl{
	
	@Override
	public String abstractMethod(){
		return "MyInterface1Impl---->abstractMethod";
	}
	//静态方法
	public static String staticMethod(){
		return "MyInterface1Impl---->staticMethod";
	}
}

方法调用

public class Demo {
    public static void main(String[] args) {
        MyInterface myInterface = new MyInterfaceImpl();
        myInterface.abstractMethod();
        myInterface.defaultMethod();
        MyInterface.staticMethod();
	}
}

输出结果

MyInterfaceImpl..........abstractMethod
MyInterface.................defaultMethod
MyInterface.................staticMethod

注意:如果实现类中对默认方法重写,那么调用的时候调用的是重写后的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值