最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java之Default關鍵字的兩種使用方式

 更新時間:2024年09月21日 09:33:06   作者:SnailMann  
Java關鍵字default主要有兩種使用場景:一是在switch語句中作為默認執(zhí)行的分支;二是在接口中定義默認方法,這是Java 8新增的特性,允許接口包含具體實現的方法,在switch中,當沒有匹配的case時,執(zhí)行default分支

Java關鍵字Default的兩種使用方法

其實之前一直都沒有關注過還有default這關鍵字的存在,最近重新回溫《Java語言程序設計》這本書時,想總結總結常用的一些修飾符。偶然發(fā)現…嗯…是這樣的.

兩種使用方法:

據我觀察,總的來說,default的用法不多,只有兩種:

  • switch語句的時候使用default
  • 在定義接口的時候使用default來修飾具體的方法

第一種使用方法

代碼:

		int day = 8;
		String dayString;
		switch (day) {
			case 1:	dayString = "Monday";
					break;
			case 2: dayString = "Tuesday";
					break;
			case 3: dayString = "Wednesday";
					break;
			case 4: dayString = "Thursday";
					break;
			case 5: dayString = "Friday";
					break;
			case 6: dayString = "Saturday";
					break;
			//如果case沒有匹配的值,那么肯定是星期日
			default: dayString = "Sunday";
					 break;
		}
		System.out.println(dayString);

總結:

  • 使用比較簡單,就是當case里的值與switch里的key沒有匹配的時候,執(zhí)行default里的方法。
  • 在這里的例子中就是key為8,所以key與所有的case的值都不匹配,所以輸出星期天Sunday.

第二種使用方法

接口的定義IntefercaeDemo,定義一個接口,里面有兩個具體的方法,和一個抽象方法

IntefercaeDemo .java

public interface IntefercaeDemo {

	//具體方法
	default void showDefault(){
		System.out.println("this is showDefault method");
	}
	static void showStatic(){
		System.out.println("this is showStatic method");
	}
	
	//沒有實現的抽象方法
	void sayHi();
}
  • LearnDefault 實現IntefercaeDemo 接口。

LearnDefault .java

public class LearnDefault implements IntefercaeDemo{
	//實現抽象方法
	@Override
	public void sayHi() {
		System.out.println("this is sayHi mehtod");
	}
	
	public static void main(String[] args) {
		//接口中被static所修飾的具體方法
		IntefercaeDemo.showStatic();
		
		//將實現了IntefercaeDemo的類實例化
		LearnDefault learnDefault = new LearnDefault();
		//被Default所修飾的具體方法可以通過引用變量來調用
		learnDefault.showDefault();

	}
}

說明:

  • JDK1.8中為了加強接口的能力,使得接口可以存在具體的方法,前提是方法需要被default或static關鍵字所修飾。

總結:

  • default修飾的目的是讓接口可以擁有具體的方法,讓接口內部包含了一些默認的方法實現。
  • 被default修飾的方法是接口的默認方法。既只要實現該接口的類,都具有這么一個默認方法,默認方法也可以被重寫。
  • 我們可以想象這么一個場景,既實現某個接口的類都具有某個同樣的功能,如果像Java8以前的版本,那么每個實現類都需要寫一段重復的代碼去實現那個功能,顯得沒有必要。這就是存在的意義。

注意:

另外這里既然提到了接口的修飾符default,那么就要注意一點,如果一個類實現了兩個接口(可以看做是“多繼承”),這兩個接口又同時都包含了一個名字相同的default方法,那么會發(fā)生什么情況?

在這樣的情況下,編譯器是會報錯,得到一個編譯器錯誤,因為編譯器不知道應該在兩個同名的default方法中選擇哪一個,因此產生了二義性。

補充:容易混淆的地方

這里的關鍵字default不要跟平時我們在類中定義方法時,沒有加任何訪問修飾符時的(default)相混淆,它們的意義是不一樣的。

public class Demo{
	//沒有訪問修飾符修飾,所以默認為(default)
	String name;
	void show(){}
}

這里的(default)指的是一種場景,既類中成員沒有被訪問修飾符修飾,所以屬于(default)的情況,效果是(default)情況的成員只能在Demo類所在的包內被訪問。

而本篇博文所說的default關鍵字是一個實實在在存在的關鍵字,是需要顯式聲明的,目前只有所說的兩種用法。與(default)場景毫無關系

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

丰城市| 曲沃县| 垣曲县| 义马市| 泰顺县| 西林县| 潼南县| 行唐县| 武夷山市| 五常市| 莱阳市| 遂川县| 洛川县| 高要市| 容城县| 阳高县| 美姑县| 平乐县| 横山县| 长沙县| 建始县| 无锡市| 梁河县| 从化市| 孝感市| 屏山县| 红安县| 道真| 固阳县| 蒙自县| 景东| 新丰县| 衡山县| 上犹县| 吉安县| 德安县| 康马县| 磐安县| 嘉峪关市| 兴仁县| 巴里|