Java語言基礎03-方法

方法 page 3 of 37


在面向對象中"方法"等同於非面嚮對象語言中的“過程”。也就是說,方法是一個程序的組成部分, 用來提供實現某個動作的機制(方法),如前面示例中的 barking。 對給定某個實體的實例,用"."連接實例與 class 中定義的方法來實現對行爲的調用:

方法調用語法
<instance>.<behavior>()
<variable> = <instance>.<behavior>(<arguments>...)

譬如,讓 dog fido 來 bark 一次的操作如下:


fido.bark()

從語法上說, Java 語言支持將數據傳給方法和獲取從方法返回的值,但上面示例中的調用既沒傳數據也沒有返回值。

Java 是一門強調類型(strongly typed) 的語言, 它要求變量、變量的值、返回類型等都必須正確匹配, 部分原因在於數據類型是區分同名的多個方法的要素。 方法的返回類型和參數都是在定義的時候就給定的:

方法定義語法
void <method-name>(<arguments>...) {
<statements>...
}
<return-type> <method-name>(<arguments>...) {
<statements>...
}

方法名,返回類型以及參數表合起來叫方法標記(method signature)。在現代的 OO 語言中, 一個 class 內可以用同一名字定義多個方法, 只要它們的標記不同。此謂方法的重載(overloading)。 Java 中還規定,返回類型不能作爲區分方法標記的因素, 因此,如果兩個方法具有相同的名稱和參數, 只是返回類型不同,是不允許出現在同一 class 中的。

在上例中,返回類型爲 void 表明方法 bark() 無須計算出任何結果傳回給調用它的程序塊。同時,bark() 也被無參調用。按對象學的說法, 調用特定對象(即類的某個實例)的方法被稱爲消息傳遞(message passing)。在上例中,消息不含有附加數據(沒有參數)。

至此,如果我們爲 Dog 創建了一個實例,那麼當它被激活時就能夠 bark 了,但是我們尚無辦法描述某些數據,比方說,讓它 bark 多少次, 它是什麼品種等等。在考察那些能使 Dog 這個數據類型更加通用的語言結構之前,我們還應先考慮 Java 語言的另一個方面,那就是,運行一個程序到底需要什麼?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章