一.Static
static 靜態修飾符,用來修飾類的屬性或方法
如果類的某個屬性,不管創建多少個對象,屬性的存儲空間只有唯一的一個,那么這個屬性就應該用static修飾,稱為靜態屬性。
static屬性可以使用對象調用,也可以直接用類名調用,靜態屬性是類的所有對象共享的,即不管創建了多少個對象,靜態屬性在內存中只有一個。
static塊和static的屬性以及方法的性質是相同的,用static修飾的代碼塊表示靜態代碼塊,當Java虛擬機加載類時,就會執行該代碼塊。
靜態塊只有在類加載的時候被執行一次,不管創建多少個對象,都不會再執行。
二.final
final 用於聲明屬性,方法和類
屬性:定義就必須直接賦值或者在構造方法中進行賦值,並且后期都不能修改。
方法:定義必須有實現代碼,並且子類里不可被覆蓋。
類:不能被定義為抽象類或是接口,不可被繼承
當final修飾屬性時,基本數據類型的屬性將成為常量,不能被修改
final屬性賦值在聲明時同時賦值,往往與static一起使用。聲明時不賦值,必須在構造方法中逐一賦值。總的原則:保證創建每一個對象的時候,final屬性的值是確定的
final修飾屬性、局部變量,值不能被修改
修飾類,不能被繼承
修飾方法,不能被子類覆蓋
三.super
super關鍵字為父類的引用,在程序中的主要用途:
在自類構造方法中調用父類的結構方法,super語句只能出現在子類構造方法體的第一行
當子類方法體中的局部變量或子類的成員變量與父類成員變量同名時,即子類局部變量覆蓋父類成員變量時用“super.成員變量名”來引用父類成員變量
當子類的成員方法覆蓋了父類的成員方法時,也就是子類和父類有相同的方法定義(方法體可以不同),此時,用“super.方法名(參數列表)”的方式訪問父類的方法
與this區別,this是指當前對象,super通常指父類
若子類的成員變量或方法與父類的成員變量或方法同名,子類的成員變量或方法優先等級高,所以子類的成員變量或方法就隱藏了父類的成員變量或方法,但若我們要用父類中的成員變量或方法,就得使用super
四.方法覆蓋
子類可以重寫父類中某一個方法,稱為方法覆蓋,也稱方法重寫,是繼承中非常重要的知識點。如果子類需要修改從父類繼承到的方法的方法體,就可以使用方法覆蓋。
原則:同名,同參,同返回值,訪問權限不能縮小
五.繼承
繼承是指一個類的定義可以基於另外一個已經存在的類,即子類基於父類,從而實現父類代碼的重用,子類能吸收已有類的數據屬性和行為,並能擴展新的能力。
形式:【訪問修飾符】 【修飾符】 子類名 extends 父類名 {子類體}
六.常量與變量的總結
在類中聲明的變量或常量叫屬性,或者叫成員變量,如name、salary、count
在方法中聲明的變量叫局部變量,或者臨時變量。
屬性可以使用四種權限修飾符修飾,
局部變量不可以 屬性可以使用static修飾,局部變量不可以
屬性可以使用final修飾,局部變量也可以
屬性的生命周期很長,隨着類加載或者創建對象被初始化,直到沒有對象引用才回收
局部變量生命周期很短,執行某個方法時臨時被初始化,方法結束即被回收
屬性可以在整個類中使用,局部變量只在當前方法中使用
屬性都有默認的初始化值,如引用類型都是null,整型是0等,局部變量不被自動初始化,必須手工初始化,如taskname手工指定為null才為null,而屬性name默認就為null