国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法

Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法

2020-07-22 17:50冰河團(tuán)隊(duì) Java教程

這篇文章主要介紹了Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

寫(xiě)在前面

Java8之前的版本中,接口中只能聲明常量和抽象方法,接口的實(shí)現(xiàn)類(lèi)中必須實(shí)現(xiàn)接口中所有的抽象方法。而在Java8中,接口中可以聲明默認(rèn)方法靜態(tài)方法,本文,我們就一起探討下接口中的默認(rèn)方法和靜態(tài)方法。

接口中的默認(rèn)方法

Java 8中允許接口中包含具有具體實(shí)現(xiàn)的方法,該方法稱(chēng)為“默認(rèn)方法”,默認(rèn)方法使用 default 關(guān)鍵字修飾 。

例如,我們可以定義一個(gè)接口MyFunction,其中,包含有一個(gè)默認(rèn)方法getName,如下所示。

?
1
2
3
4
5
6
public interface MyFunction<T>{
  T get(Long id);
  default String getName(){
    return "binghe";
  }
}

默認(rèn)方法的原則

在Java8中,默認(rèn)方法具有“類(lèi)優(yōu)先”的原則。

若一個(gè)接口中定義了一個(gè)默認(rèn)方法,而另外一個(gè)父類(lèi)或接口中又定義了一個(gè)同名的方法時(shí),遵循如下的原則。

1.選擇父類(lèi)中的方法。如果一個(gè)父類(lèi)提供了具體的實(shí)現(xiàn),那么接口中具有相同名稱(chēng)和參數(shù)的默認(rèn)方法會(huì)被忽略。

例如,現(xiàn)在有一個(gè)接口為MyFunction,和一個(gè)類(lèi)MyClass,如下所示。

  • MyFunction接口
?
1
2
3
4
5
public interface MyFunction{
  default String getName(){
    return "MyFunction";
  }
}
  • MyClass類(lèi)
?
1
2
3
4
5
public class MyClass{
  public String getName(){
    return "MyClass";
  }
}

此時(shí),創(chuàng)建SubClass類(lèi)繼承MyClass類(lèi),并實(shí)現(xiàn)MyFunction接口,如下所示。

?
1
2
3
public class SubClass extends MyClass implements MyFunction{
  
}

接下來(lái),我們創(chuàng)建一個(gè)SubClassTest類(lèi),對(duì)SubClass類(lèi)進(jìn)行測(cè)試,如下所示。

?
1
2
3
4
5
6
7
public class SubClassTest{
  @Test
  public void testDefaultFunction(){
    SubClass subClass = new SubClass();
    System.out.println(subClass.getName());
  }
}

運(yùn)行上述程序,會(huì)輸出字符串:MyClass。

2.接口沖突。如果一個(gè)父接口提供一個(gè)默認(rèn)方法,而另一個(gè)接口也提供了一個(gè)具有相同名稱(chēng)和參數(shù)列表的方法(不管方法是否是默認(rèn)方法), 那么必須覆蓋該方法來(lái)解決沖突。

例如,現(xiàn)在有兩個(gè)接口,分別為MyFunction和MyInterface,各自都有一個(gè)默認(rèn)方法getName(),如下所示。

  • MyFunction接口
?
1
2
3
4
5
public interface MyFunction{
  default String getName(){
    return "function";
  }
}
  • MyInterface接口
?
1
2
3
4
5
public interface MyInterface{
  default String getName(){
    return "interface";
  }
}

實(shí)現(xiàn)類(lèi)MyClass同時(shí)實(shí)現(xiàn)了MyFunction接口和MyInterface接口,由于MyFunction接口和MyInterface接口中都存在getName()默認(rèn)方法,所以,MyClass必須覆蓋getName()方法來(lái)解決沖突,如下所示。

?
1
2
3
4
5
6
public class MyClass{
  @Override
  public String getName(){
    return MyInterface.super.getName();
  }
}

此時(shí),MyClass類(lèi)中的getName方法返回的是:interface。

如果MyClass中的getName()方法覆蓋的是MyFunction接口的getName()方法,如下所示。

?
1
2
3
4
5
6
public class MyClass{
  @Override
  public String getName(){
    return MyFunction.super.getName();
  }
}

此時(shí),MyClass類(lèi)中的getName方法返回的是:function。

接口中的靜態(tài)方法

在Java8中,接口中允許添加靜態(tài)方法,使用方式接口名.方法名。例如MyFunction接口中定義了靜態(tài)方法send()。

?
1
2
3
4
5
6
7
8
public interface MyFunction{
  default String getName(){
    return "binghe";
  }
  static void send(){
    System.out.println("Send Message...");
  }
}

我們可以直接使用如下方式調(diào)用MyFunction接口的send靜態(tài)方法。

MyFunction.send();

最后,附上Java8新特性核心知識(shí)圖,祝大家在學(xué)習(xí)Java8新特性時(shí)少走彎路。

Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法

以上就是Java8新特性之接口中的默認(rèn)方法和靜態(tài)方法的詳細(xì)內(nèi)容,更多關(guān)于JAVA8 新特性的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://www.cnblogs.com/binghe001/p/13022207.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91中文在线 | 国产福利视频 | 人人射在线观看 | 亚洲国产aⅴ精品一区二区 少妇一级片免费看 | 羞羞的视频在线 | 成人精品国产免费网站 | 婷婷国产| 亚洲精品专区 | 蜜桃视频成人在线观看 | 欧美亚洲国产一区二区三区 | www.91色.com| 99久久久无码国产精品 | 国产精品久久久久久 | 久久成人精品 | 成人精品国产免费网站 | 欧美日韩成人在线播放 | 亚洲视频久久久 | 成人av片在线观看 | 日本精品久久 | 日韩欧美精品一区二区 | 亚洲黄色激情 | 国产一区二区综合 | 一区二区三区在线免费观看 | 久久久99精品免费观看 | 亚洲国产中文字幕 | 久久久久国产精品免费 | www.国产精品| 中文日韩av| 免费成人福利视频 | 精品国产欧美一区二区三区成人 | 最新中文字幕 | 国产美女精品视频免费观看 | 国产a级黄色毛片 | 一级黄色大片 | 黄色tv网站| 国产成人精品综合 | 精品女同一区二区三区在线绯色 | 不卡二区| 毛片免费电影 | 日韩精品一区二区三区中文字幕 | 超碰首页 |