Java接口interface的实现方法

JDK1.8中为了加强接口的能力,使得接口可以存在具体的方法。

前提是方法需要被default或static关键字所修饰。

下面我们直接上实例

1.定义一个接口 TestInterface,我们在定义两个具体实现的方法,分别用static和default修饰

package test;

public interface TestInterface {
	

	static void showStatic(String s) {
		System.out.println("this is staticshow !"+s);
	}
	

	default void showDefault(String s) {
	  System.out.println("this is showDefault method"+s);
	}
	
	//报错
//	public void showPublic(String s) {
//		  System.out.println("this is showPublic method"+s);
//		}
		

	void sayHi();
}

2.定义一个实现类InterfaceDemotest 实现该接口

package test;

public class InterfaceDemotest implements TestInterface{
	
	public static void main(String args[]) {
		InterfaceDemotest t = new InterfaceDemotest();
		t.sayHi();
		t.showDefault("大神!");
		TestInterface.showStatic("大佬!");
		
	}

}

3.子类可以被重写接口中default方法

	 public  void showDefault(String s) {}{
		System.out.println("子类重写");
	}
	 
	 

4.注意:关键字default和类中没有修饰(default)的方法不一样

这里的关键字default不要跟平时我们在类中定义方法时,没有加任何访问修饰符时的(default)相混淆,它们的意义是不一样的.

这里的指的是一种场景,既类中成员(方法、变量)没有被访问修饰符修饰,所以属于(default)的情况,效果是这类成员只能在类所在的包内被访问。

	 
	 //没有访问修饰符修饰,所以默认为(default),
	 //跟加了关键词的default是不一样的,一般的类加 default 修饰方法会直接报错
	 void test() {
		 System.out.println("没有修饰符");
	 }

附加知识点:

1.以下是各版本的名称及发布日期:

版本

名称

发行日期

JDK 1.1.4

Sparkler(宝石)

1997-09-12

JDK 1.1.5

Pumpkin(南瓜)

1997-12-13

JDK 1.1.6

Abigail(阿比盖尔–女子名)

1998-04-24

JDK 1.1.7

Brutus(布鲁图–古罗马政治家和将军)

1998-09-28

JDK 1.1.8

Chelsea(切尔西–城市名)

1999-04-08

J2SE 1.2

Playground(运动场)

1998-12-04

J2SE 1.2.1

none(无)

1999-03-30

J2SE 1.2.2

Cricket(蟋蟀)

1999-07-08

J2SE 1.3

Kestrel(美洲红隼)

2000-05-08

J2SE 1.3.1

Ladybird(瓢虫)

2001-05-17

J2SE 1.4.0

Merlin(灰背隼)

2002-02-13

J2SE 1.4.1

grasshopper(蚱蜢)

2002-09-16

J2SE 1.4.2

Mantis(螳螂)

2003-06-26

Java SE 5.0 (1.5.0)

Tiger(老虎)

2004-09-30

Java SE 6.0 (1.6.0)

Mustang(野马)

2006-04

Java SE 7.0 (1.7.0)

Dolphin(海豚)

2011-07-28

Java SE 8.0 (1.8.0)

Spider(蜘蛛)

2014-03-18

Java SE 9   2017-09-21
Java SE 10   2018-03-14 [3] 

2.jdk1.8新特性

  1. Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可。

  2. 新增lambda表达式

  3. 提供函数式接口

  4. Java 8 允许你使用 :: 关键字来传递方法或者构造函数引用

  5. 我们可以直接在lambda表达式中访问外层的局部变量。

参考链接:https://blog.csdn.net/SnailMann/article/details/80231593 Java中Default关键字的两种使用方法

                  百度百科 Java Jdk

创造价值,乐在分享。

欢迎加入我的Java与Android逆向开发交流QQ群,提问学习。

猜你喜欢

转载自blog.csdn.net/ly_xiamu/article/details/84450294