拳頭公司推出LCS活動 挖掘培養北美LOL高段女玩家
一、訪問修飾符
1.1 private訪問控制符
當前類訪問許可權
如果一個成員方法或成員變數名前 使用了 private 訪問控制符,那麼這個成員只能在這個類的內部使用。
1.2 default 訪問控制符
包訪問許可權(預設)
default訪問控制的成員或外部類可以被相同包下的其他類訪問;default不能修飾變數。
1.3 protected 訪問控制符
子類訪問許可權
基類的 protected 成員是包內可見的,並且對子類可見;
若子類與基類不在同一包中,那麼在子類中,子類例項可以訪問其從基類繼承而來的protected方法,而不能訪問基類例項的protected方法。
1.4 public 訪問控制符
公共訪問許可權
可以 被所有的類訪問,不管訪問類與被訪問類是否在同一個包中。
二、非訪問修飾符
2.1 static修飾符
用來修飾類方法和類變數。static的真正作用就是用於區分Field、方法、內部類、初始化塊這四種成員到底屬於類本身還是屬於例項。
2.1.1特點
- static修飾的變數屬於類變數,多個物件共享同一個static變數;
- static修飾的方法屬於靜態方法,靜態方法不能重寫(不屬於某個物件),不能使用this關鍵字(無法指向合適的物件);
- 可以直接通過“類名 . 屬性/方法”的方式訪問靜態屬性和靜態方法,不需要建立類的物件;
- 靜態成員不能直接訪問非靜態成員。靜態成員屬於類,不需要生成物件就存在了,而非靜態需要生成物件才產生. 所以靜態成員不能直接訪問
2.2 final修飾符
意思是最終的、不可修改的,最見不得變化,用來修飾類、方法和變數
2.2.1特點
- final修飾的類不能被繼承,final類中的所有成員方法都會被隱式地指定為final方法;
- final修飾的方法不能被重寫;
- final修飾的變數是常量,如果是基本資料型別的變數,則其數值一旦在初始化之後便不能更改;如果是引用型別的變數,則在對其初始化之後便不能再讓其指向另一個物件。
2.3 abstract修飾符
abstract 修飾符,用來建立抽象類和抽象方法。
2.3.1特點
- abstract修飾的類是抽象類,抽象類可以繼承別的普通類或抽象類,也可以實現介面,但抽象類不可以例項化;
- abstract修飾的方法是抽象方法,抽象方法沒有方法體;
- 抽象類不一定有抽象方法,有抽象方法的類必須是抽象類;
三、jdk1.8的介面中default修飾的方法
接口裡的變數預設隱含型別是public static final
方法預設型別是public abstract
在1.8中,對已有的介面,如果想對介面增加一個新方法,那麼需要對實現該介面的所有類進行修改,如果介面實的現類很多,就會帶來
很大的工作量,而且還很容易破壞以前的程式碼,帶來一些問題。如果把新的方法定義為default方法,就可以避免對其他實現類的修改。
新增了default方法,如果方法前面加上該修飾符,則實現類並不是必須實現該方法。並且在介面中,還可以直接編寫該方法的方法體。
當然子類也可以重寫該方法。
注意:
-
當多個介面中有同一個用default修飾的方法時,就無法判斷到底實現的是哪個介面的方法。這種情況下,就必須重寫方法。
-
一個類繼承的父類和實現的介面中都有同一個方法,而這個類又沒有重寫時,實現的是父類的方法,而不是介面中的方法。