Java8新特性之接口的默认方法和静态方法

java8的接口增加了default方法和static方法,访问权限为public。

接口的static方法和类的static方法区别,我们先来看一下类的static方法。

类的static方法、属性可以被继承不能被重写,只能被隐藏,举例如下

//父类
public class fatherclass{
	static void print(){
		System.out.println("father static");
      }
}
//子类

public class childclass extends fatherclass {
	static void print(){
		System.out.println("child static");
	}

}


public static void main(String[] args) {        
   fatherclass father=new childclass();        
father.print();
}

此时输出结果为father static,说明子类并没有覆盖父类的static方法,此时根据声明类型来选择实际调用方法,而没有通过对象实际类型来选择。

接口的static方法不能被继承,无论是类还是子接口都不能继承父类的static方法,static属性可以被继承不能被重写。

接口的default方法可以被继承也可以被重写。若一个类实现的两个接口中有相同的default方法,此时发生冲突,两种解决方案。

方法一:指定重写具体接口的default方法。

方法二:直接重写冲突的default方法。本质相同。

//接口1
public interface testInterface1 {
	default void test(){
		System.out.println("default Interface1");
	}
}
//接口2

public interface testInterface2 {
	default void test(){
		System.out.println("default Interface2");
	}
}


public class childclass extends fatherclass implements testInterface,testInterface2 {
//方法一    
@Override
public void test() {
  testInterface.super.test();
}
//方法二
@Override
public void test() {
  System.out.println("new default");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值