Java this、final等關鍵字總結。本站提示廣大學習愛好者:(Java this、final等關鍵字總結)文章只能為提供參考,不一定能成為您想要的結果。以下是Java this、final等關鍵字總結正文
this
關鍵字this引用對象自身。它也可以在構造方法內部用於調用同一個類的其他構造方法。
隱藏的靜態變量可以通過”類.靜態變量”來引用,而隱藏的實例變量就需要使用”this.實例變量”來引用。
調用一個重載的構造方法this引用是必須的。
this是個隱式參數,代表當前對象
publie class Student{ private String name; public void setName(String name){ this.name=name; //this.name為當前對象的成員變量 } }
如果某個構造方法的第一個語句具有形式this( ••• ),那麼這個構造方法將調用同一類中的其他構造方法。
注意:
在構造器中this(…)必須放在該構造器的第一行。
this不能出現在靜態方法裡面
super
super關鍵字代指父類,可以用於調用父類的普通方法和構造方法。
super()表示調用父類的構造器
super.方法來引用父類的方法
super()也和this()一樣必須放在方法的第一句
super()和this()不能同時出現
super可以屏蔽子類屬性和父類屬性重名時帶來的屬性遮蓋,super. 表示調用父類的方法或屬性
在子類的構造器中如果沒有指定調用父類的哪一個構造器,那麼就會調用父類的無參構造器,即super()
注意:
父類的構造器不能被子類繼承
方法和屬性可以被繼承,權限不限制能否繼承過來,限制的是能否直接訪問
先構造父類,後構造子類
instanceof
用法:引用 instanceof 類名
判斷這個引用所指向的對象是否屬於這個類。
用在強制轉換之前,避免類型轉換異常。
if(a instanceof Dog){ Dog d=(Dog)a; } implements
一個類實現一個接口必須實現接口中所有的方法,否則其為抽象類,並且在實現類中的方法要加上public(不能省略)。
類中的默認修飾符:default。
接口中的默認修飾符:public。
一個類除了繼承另一個類外(只能繼承一個類),還可以實現多個接口(接口之間用逗號分隔)。
static
把對象相關的變成類相關的,它可以修飾屬性、方法、代碼塊和內部類.
static修飾屬性(類變量):
那麼這個屬性就可以用” 類名.屬性名 “來訪問,也就是使這個屬性成為本類的類變量,為本類對象所共享。
類加載的過程
類本身也是保存在文件中(字節碼文件保存著類的信息)的,Java會通過I/O流把類的文件讀入JVM(java虛擬機),這個過程稱為類的 加載。
JVM會通過類路徑(CLASSPATH)來找字節碼文件。需要的時候才會進行類加載,生成對象時是先加載後構造
類變量,會在加載時自動初始化,初始化規則和實例變量相同。
注意:
類中的實例變量是在創建對象時被初始化的。
static修飾的屬性,是在類加載時被創建並進行初始化,類加載的過程只進行一次,也就是類變量只會被創建一次。
static修飾方法(靜態方法):
會使這個方法成為整個類所公有的方法,可以用” 類名.方法名 “訪問。
static修飾的方法,不能直接訪問本類中的非靜態成員,但本類的非靜態方法可以訪問本類的靜態成員。
在靜態方法中不能出現this關鍵字。
父類中是靜態方法,子類中不能覆蓋為非靜態方法,在符合覆蓋規則的前提下,在父子類中,父類中的靜態方法可以被子類中的靜態方法覆蓋,但是沒有多態。(在使用對象調用靜態方法時其實是調用編譯時類型的靜態方法)
java中的main方法必須寫成static的原因:
在類加載時無法創建對象,而靜態方法可以不通過對象調用,所以在類加載時就可以通過main方法入口來運行程序。
static修飾初始代碼塊:
這時這個初始代碼塊就叫做靜態初始代碼塊,這個代碼塊只在類加載時被執行一次。
可以用靜態初始代碼塊初始化一個類。
動態初始代碼塊,寫在類體中的“{}”,這個代碼塊是在生成對象時運行,這種代碼塊叫動態初始代碼
final
修飾符final:不允許改變,可以修飾變量、方法、類。
final修飾變量:
被fianl修飾的變量就會變成常量,一旦賦值不能改變
常量可以在初始化時直接賦值,也可以在構造方法裡賦值,只能在這兩種方法裡二選一,不能不為常量賦值
常量不會有默認初始值
鎖定棧,使棧中的數據不可以改變
靜態常量只能在初始化時直接賦值
final修飾方法:
被final修飾的方法將不能被其子類覆蓋,保持方法的穩定不能被覆蓋
final修飾類:
被final修飾的類將不能被繼承
final類中的方法也都是final的
注意:
final不能用來修飾構造方法
abstract:
修飾符abstract:抽象的,定義框架不去實現,可以修飾類和方法
abstract修飾類:
會使這個類成為一個抽象類,這個類將不能生成對象實例,但可以做為對象變量聲明的類型,也就是編譯時類型
抽象類就相當於一個類的半成品,需要子類繼承並覆蓋其中的抽象方法,這時子類才又創建實例的能力,如果子類沒有實現父類的抽象方法,那麼子類也要為抽象類。
abstract修飾方法:
會使這個方法變成抽象方法,也就是只有聲明而沒有實現,實現部分以”;”代替,需要子類繼承實現。
抽象方法代表了某種標准,定義標准,定義功能,在子類中去實現功能
(子類繼承了父類並需要給出從父類繼承的抽象方法的實現)。
方法一時間想不到怎麼被實現,或有意要子類去實現而定義某種標准,這個方法可以被定義為抽象。
注意:
有抽象方法的類一定是抽象類。但是抽象類中不一定都是抽象方法,也可以全是具體方法。
希望本篇文章可以幫到大家