1.訪問修飾符

在每個方法之前,程序員可以指定所謂的訪問修飾符。其中包括以下關鍵字:public, protected, private

這些訪問修飾符允許您限制其他類對方法的訪問。

例如,如果在private方法聲明之前寫關鍵字,則只能從聲明它的同一個類中調用該方法。關鍵字public允許從任何類的任何方法訪問標記的方法。

這樣的修飾符一共有3個,但是對一個方法的訪問有4種。這是因為沒有訪問修飾符也意味著一些事情。

從...訪問
修飾符 任何班級 兒童班 它的包裝 它的班級
public 是的 是的 是的 是的
protected 是的 是的 是的
沒有修改器 是的 是的
private 是的

1.public修改器

可以從程序的任何地方public訪問用修飾符標記的方法(或變量,或類)。這是最高程度的開放——沒有限制。

2.private修改器

用修飾符標記的方法(或變量,或類)private只能從聲明它的同一個類中訪問。對於所有其他類,標記的方法(或變量)是不可見的。就好像它不存在一樣。這是最高級別的限制——只有它自己的類。

3.無修飾符(默認修飾符)

如果一個方法(或變量)沒有用任何修飾符標記,那麼它被認為具有“默認修飾符”。具有該修飾符(即根本沒有)的變量或方法對於聲明它們的包中的所有類都是可見的。並且只對他們。這個修飾符有時也被稱為package-private,暗示對變量和方法的訪問是對它們的類所在的整個包開放的。

4.protected修改器

如果方法用修飾符標記protected,則可以從同一個類、同一個包和後代(繼承聲明該方法的類的類)訪問它。我們將在 Java Core 探索中更詳細地分析這個主題。

您可以在所有方法(以及所有類和類變量)上使用public修飾符,直到完成 Java 語法任務。當我們開始積極學習 OOP 時,您將需要其他修飾符。

為什麼需要訪問修飾符?

對於同時由數十名和數百名程序員編寫的大型項目,它們變得必不可少。

有時,在某些情況下,程序員想要將一個過大的方法拆分成多個部分,並將部分代碼移動到輔助方法中。但與此同時,他或她也不希望其他程序員調用這些輔助方法,因為相應的代碼可能無法正常工作。

所以他們想出了這些訪問修飾符。如果你用private標記一個輔助方法,那麼除了你的類之外沒有任何代碼可以看到你的輔助方法。



2.static關鍵詞

關鍵字static使方法靜態化。我們稍後會看看這意味著什麼。現在,只需記住一些關於靜態方法的事實。

事實 1. 靜態方法不附加到任何對象,而是屬於聲明它的類。要調用靜態方法,您需要編寫:

ClassName.MethodName()

靜態方法的例子:

班級名稱 靜態方法名
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

如果從其類中調用靜態方法,則可以省略靜態方法名稱之前的類名。這就是為什麼您不需要在調用的每個靜態方法的名稱之前寫的原因。Solution

事實 2. 靜態方法不能訪問它自己類的非靜態方法。靜態方法只能訪問靜態方法。結果,我們將要從main靜態方法調用的所有方法都聲明為。

為什麼?當您開始學習 OOP 並了解靜態方法的工作原理時,您將能夠自己回答這個問題。



3.throws關鍵詞

您可能在方法聲明中看到過另一個關鍵字 — 關鍵字throws。與訪問修飾符和static關鍵字不同,this 關鍵字放在方法參數之後:

public static Type name(parameters) throws Exception
{
  method body
}

我們稍後在研究異常時會考慮它的確切含義。

但從表面上看,我們可以說用 throws 關鍵字標記的方法可以拋出錯誤(異常),這意味著該類Exception (以及繼承它的類)的實例。如果一個類中可能出現幾種不同類型的錯誤,那麼您需要列出每一種錯誤,並用逗號分隔。


4.main方法

聲明方法的行包含所有修飾符,將影響如何從其他類和方法調用此方法。它會影響方法將返回的結果類型,並指示在它運行時可能出現的錯誤。

這樣的一行稱為方法聲明,一般格式如下:

access modifier static Type name(parameters) throws exceptions
方法聲明的一般格式

哪裡access modifiers 被替換為public, protected, private, 或什麼都沒有;

如果方法是靜態的,則static出現關鍵字(非靜態方法不存在)

Type是返回值的類型(void如果沒有結果)

現在您可能了解方法聲明中所有關鍵字的含義main

public static void main(String[] args) throws Exception
聲明main方法

main()如關鍵字所示,可以從任何類訪問該方法public

該方法是靜態的,因此可以將其顯式調用為Solution.main().

main方法不返回任何結果。返回類型是void(無類型)。

main方法採用參數(!):一個字符串數組。參數名稱args在我們的腦海中暗示了“參數”。當程序啟動時,您可以向它傳遞參數——一個字符串數組。它們將包含在方法args 中的數組中main()

方法中可能會出現未處理的錯誤Exception(或其後代)main()