我學習了java的方法,在c++中相當於函式
Java方法是物件導向程式設計中最核心的概念之一,它允許我們在程式中封裝一部分程式碼,以便在需要時重複使用。
方法的宣告語法:
訪問修飾符 返回型別 方法名(引數列表) {
// 方法體
}
訪問修飾符:
public:公有的,任何地方都能訪問。
protected:受保護的,同一包內和子類可以訪問。
private:私有的,只有同一個類內部才能訪問。
(default):預設的訪問修飾符,只有在同一個包內才能訪問。
返回型別:
可以是任何Java基本資料型別(如int、double等)、引用型別(如String、List等),或者是void(表示沒有返回值)。
引數列表:
用於定義傳遞給方法的資料,可以有零個、一個或多個引數。
引數名稱和數量決定了方法的簽名(signature),常用於方法過載。
方法體:
方法內部執行的程式碼塊。
可以包含變數宣告、表示式、控制結構(如if, for, while等)、方法呼叫等。
方法的執行與呼叫:
可以使用方法名來執行一個方法。
呼叫方法時,實際引數會被傳送給方法的形參(如果有的話)。
可以為方法指定一個呼叫者(caller),這個呼叫者在方法執行結束時接收返回值(如果方法有返回值的話)。
方法的過載(Overloading):
擁有相同的方法名,但引數列表不同的方法。
過載方法可以有不同的訪問修飾符和返回型別。
靜態方法(Static Methods):
可以透過類直接呼叫,不需要建立類的例項。
靜態方法不能直接訪問非靜態的成員變數和方法。
例項方法(Instance Methods):
必須透過類的例項來呼叫。
例項方法可以透過this關鍵字訪問當前物件的例項變數和方法。
遞迴方法:
一個方法呼叫它自己的方法。
用於解決遞迴問題,比如求階乘、遍歷樹結構等。
構造方法(Constructor):
用於初始化新建立物件的成員變數。
沒有返回型別,其名稱必須與類名相同。
可以過載,但不會有constructor方法過載(因為constructor沒有返回型別)。
方法的重寫(Overriding):
在子類中重新定義一個與父類方法有相同名稱、返回型別、引數列表和丟擲異常的方法。
重寫的方法不能降低方法的訪問許可權。
可變引數列表(Varargs):
允許方法接受可變數量的引數。
是透過新增一個...來表示一個引數列表的結尾。
方法的丟擲(Throws):
用於宣告方法可能丟擲的異常。
可以丟擲多個異常,每個異常之間用逗號分隔。
方法的記憶體管理:
方法執行時,除了區域性變數,還會在棧記憶體中建立一個新的作用域。
方法執行結束時,其作用域內的區域性變數會被釋放。