一、訪問修飾符
在類和方法中,均可使用訪問修飾符以鎖定該類或方法的被訪問權限。訪問修飾符有四種:
(一)public
同一個項目中,對所有的類可見。
(二)protected
同一個項目中,對同一個包中的類可見,對子類可見,對其他包中的類不可見。
(三)default
同一個項目中,對同一個包中的類可見,對其他包中的類不可見。
(四)private
同一個項目中,只對當前類可見。
二、static 和 this 關鍵字
(一)static
static 用于修飾類或方法,表示其為靜態類或靜態方法,在調用的過程中無需對其實例化,即可直接使用。
public class OuterSample
{public static void innermethod(){System.out.println("hello!");}public static void main(String[] args){OutSample.innermethod();}
}
該案例中,由于方法 innermethod() 用 static 修飾,在 main 方法中調用的時候無需實例化,直接用 類名.方法名 即可調用。
(二)this
this 關鍵字用于指代當前對象(this 指向對類進行實例化之后的全局變量,而不是方法中定義的局部變量),比較以下三個案例:
public class OuterSample
{ String name="Spike"; public String innermethod() { String name="Tom"; return name; } public static void main(String[] args) { OuterSample os1=new OuterSample(); String x=os1.innermethod(); System.out.println(x); }
}
本案例中沒有使用 this 關鍵字,則調用 innermethod() 時默認使用局部變量 “Tom”。?
public class OuterSample
{ String name="Spike"; public String innermethod() { String name="Tom"; return this.name; } public static void main(String[] args) { OuterSample os1=new OuterSample(); String x=os1.innermethod(); System.out.println(x); }
}
?本案例中,os1 為類 OuterSample 的一個實例化對象,this 關鍵字指向類 OuterSample 的全局變量,即 “Spike”。
public class OuterSample
{ String name="Spike"; public String innermethod() { this.name="Tom"; return this.name; } public static void main(String[] args) { OuterSample os1=new OuterSample(); String x1=os1.innermethod(); System.out.println(x1); String x2=os1.name;System.out.println(x2);}
}
?本案例中,this 同樣指向全局變量,但在方法中對全局變量進行了重新賦值,所以即使 this 指向全局變量,也是在方法 innermethod() 中被賦值為 “Tom” 的全局變量。而 x2 沒有調用方法,this 指向的仍然是方法 innermethod() 外部的全局變量,也就是“Spike”。
三、構造方法和普通方法
(一)構造方法
① 方法名與類名相同
② 沒有返回值類型
③ 不能使用 static 修飾
④ 可以有多種重載形式
(二)普通方法
普通方法名稱與類名不能相同,分為靜態方法和實例方法:
靜態方法,使用 static 修飾符,無需對類進行實例化即可調用。
實例方法,不使用 static 修飾符,調用時需要先對類進行實例化,然后用?類名.方法名 調用。
四、方法重載和方法重寫
(一)方法重載
構造方法和普通方法均可進行方法重載,也就是方法名相同,而參數數量或類型不同。
特點:同一個類,方法名相同,參數列表不同。
(二)方法重寫
?方法重寫發生在子類繼承父類的情況下,當子類需要對父類的某些方法進行重新編寫的時候,可以在子類中進行方法重寫,方法名與父類的方法名相同。
特點:不在同一個類,子類重寫父類的方法,方法名和參數列表均相同。