Java之JDK1.8新特性五(接口中的默认方法与静态方法)

1、默认方法

1.1 概述

Java 8中允许接口中包含具有具体实现的方法,该方法称为“”默认方法“”,用default关键字修饰
示例代码如下:

interface Inter{
	void show();//抽象方法
	default void method() {
		System.out.println("默认方法");
	}
}
1.2 作用

供实现类调用或者实现类重写

1.3 说明
  1. 接口中,有多个默认方法时,实现类都可继承使用。
  2. 如果一个类实现了多个接口,且多个接口有重名的默认方法,实现类必须重写该方法。(实现类重写的默认方法,default关键字不可以保留)
  3. 当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法。
  4. 一个接口继承多个接口时,如果多个父接口中存在重名抽象方法,那么子接口必须要重写该方法。(子接口重写的默认方法,default关键字可以保留)

示例代码如下:

interface InterFu{
	default void show(){
		System.out.println("showFu");
	}
	
	default void method(){
		System.out.println("method");
	}
}

interface InterMu{
	default void show(){
		System.out.println("showMu");
	}
}

//4、一个接口继承多个接口时,如果父接口中存在重名抽象方法,那么子接口必须要重写该方法
interface InterZi extends InterFu,InterMu{
	//方式1:不保留default,将该方法写成抽象方法
	/*@Override
	void show();*/
	
	//方式2:保留default
	@Override
	default void show() {
		System.out.println("showZi");
	}
}

class Doo implements InterFu{}

class Foo implements InterFu,InterMu{
	//2、一个类实现了多个接口,且多个接口有重名的默认方法,实现类必须重写该方法。
	@Override
	public void show() {
		//在重写方法的时候,可以选择使用InterFu的show,也可以选择InterMu的show,也可以实现类自己重新定制
		//InterFu.super.show();
		System.out.println("实现类show");
	}
}

class Fu{
	public void show(){
		System.out.println("fu show");
	}
}

class Zi extends Fu implements InterFu{}

public class InterfaceDemo02 {
	@Test
	public void text01(){
		//1、接口中,有多个默认方法时,实现类都可继承使用
		new Doo().show();
		new Doo().method();
	}
	
	@Test
	public void text02(){
		//3、当一个类继承一个父类且实现一个或多个接口的时候,如果父类中存在和接口中相同的方法名声明,子类会调用父类中的方法
		new Zi().show();//"fu show"
	}
}

2、静态方法

1.1 概述

Java 8中允许接口中包含静态方法
示例代码如下:

interface MyInter{
	public static String getName(){
		return "Tom";
	}
}
1.2 作用

主要是供接口使用,比如说为默认方法提供某些功能。
示例代码如下:

interface MyInter{
	//默认方法
	default String getName(){
		return MyInter.joinName("张", "三丰", String::concat);
	}
	
	//静态方法
	public static String joinName(String surname, String name, BiFunction<String, String, String> bf){
		return bf.apply(surname, name);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值