Java 類的方法總結-目前網上最完整9種方法總結
- 定義一個完整的類方法,需要六個步驟,也就是六大部分。也因為這六個部分的不同而可以大概分為9種方法。可能有些漏缺錯誤,希望大家能幫忙糾正。
一,一般方法
二,構造方法
三,無參無返回值的方法。
四,無參有返回值的方法。
五,有參無返回值的方法。
六,有參有返回值的方法。
七,靜態方法。
八,非靜態方法。
九,抽象方法。
另外在加上
方法的重載
方法的重寫。
方法的調用。
可能是目前關於java 方法最完整的總結了。當然還有例如有參的構造方法等一些組合,就沒必要一一列舉了。後麵會有些許介紹,後期再繼續編輯優化。 如果你想學習Java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裏麵有大量的學習資料可以下載。
第一步,訪問修飾符。參考前麵寫的成員變量與局部變量。就不羅嗦了。
第二步,關鍵詞。
關鍵詞主要有static和abstract兩個關鍵詞。
有static修飾的方法叫做靜態方法。沒有的則叫非靜態方法。
其中我們最熟悉的main方法就有static 修飾。這個方法也是我最不熟悉搞不懂的方法。
static方法一般稱作靜態方法,由於靜態方法不依賴於任何對象就可以進行訪問,因此對於靜態方法來說,是沒有this的。因為它不依附於任何對象,既然都沒有對象,就談不上this了。
1.其實可以理解為此類所共有的方法。我理解的就是類方法。所以可以直接用類名調用。至於為何有這種麻煩的靜態方法以及靜態變量的存在,我認為有兩個原因。
第一,
靜態變量/方法隻需要初始化一次,而不像其他的每調用一次就要初始化一次。可以減少內存空間的使用。
靜態的可以被直接訪問而不實例化自身再訪問,大型程序考慮內存占用問題 超小程序直接靜態化,更加方便些。
第二,不知道大家注意到main方法以及後麵類與對象沒有。
在後麵一大堆父子類。都是沒有main方法的。更不會有一大堆的靜態方法,靜態方法常駐內存,會大量消耗內存空間。 所以基本上隻有一個測試類有main方法以及static修飾的。這樣的方法可以直接測試。如果你沒有必要去訪問對象的外部,那麼就使你的方法成為靜態方法。她會被更快地調用。
這些算是程序的優化吧。
3. 靜態方法中不能直接調用非靜態方法,需要通過對象來訪問非靜態方法。如:
4. 並且由於這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因為非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。
另一個關鍵字。Abstract。被他修飾的方法叫做抽象方法。
抽象方法:在類中沒有方法體的方法,就是抽象方法。
抽象方法必須被實現!也就是被繼承。所以他所在的類必然是父類。一定有一個子類。
如果一個子類沒有實現父類中的抽象方法,則子類也成為了一個抽象類!
抽象方法必須被重寫。從沒有方法體變為有具體的方法體。
抽象類不能被實例化。
抽象方法隻需聲明,而不需實現某些功能。就好像大蒙古國的海軍一樣。隻需要有名頭,不需要有艦隊。
第三步,返回值有否?
如果有返回值就是有返回值方法。
有返回值,則寫具體返回類型,比如string int 等,這就是java強類型的一個表現。
而且方法體裏麵要有return 符合返回類型的變量名。內外一致。而且隻能返回一個數據。如果是多個數據的話,還是多種類型的數據的話,第一拆分這個方法成為更加簡單的精簡方法。第二就是用數組來接受這些數據。
為何有放回類型的方法呢,因為他返回的數據必然被其他方法采用,甚至多次采用。加工處理。所以就需要這個數據,他不是最終的結果。所以要有返回類型,這樣就必須用變量來進行接受。
沒有就是無返回值方法。尅用void修飾。
因為這是最終的處理結果。所以無需再接受處理,直接用println輸出就行。
返回類型與無返回值類型的方法的使用
public String display(){
String aa="影片名字:"+name+"\n類型:"+type+"\n導演:"+daoyan+"\n主演:"+zhuyan;
return aa;}
/*反回string類型aa。方法名前麵必須添加想要返回的類型。這種方法有些限製。比如一次隻能返回一種類型。不可能在string 後麵加一個int,或者再加一個其他類型。/
下麵的一句就是創建的對象中調用的方法。
System.out.println(f.display());
}
//方法名前麵的void就意味著沒有返回值,也就不用設置返回的類型。下麵一句是就是創建的對象中調用的方法: f.display1();
前麵帶有返回類型的方法隻有返回數據,而沒有輸出數據,所以調用的時候還必須添加輸出的方法。後麵沒有返回類型的方法已經封裝了輸出的方法,所以創建對象的時候直接調用方法就行。而不能在加上System.out.println(f.display1());輸出方法再套一個輸出方法。
第四步。方法的名稱。
為了見名知意,也就是可以自定義。盡量有意義,第一樣就明白是什麼意思,代表了什麼,而且盡量用英文,如果是詞組的話,第二個單詞首字母大寫。
既然可以自定義,就有了一個特殊的方法名。與類名相同的方法——構造方法。 構造方法的作用就在於一下子可以繼承多個屬性。對於大型方法非常實用。同樣因為要繼承多個屬性,必然參數很多。但是連void也沒有。
當然係統還有一個默認的隱藏的無參構造方法。也就是說每一個類中必然有一個無參構造方法。隻不過平常隱藏起來了。一旦出現有參的構造方法,就必須將無參的構造方法也寫出來。
構造方法雖然可以和其他方法組合,但是不能被static、final、synchronized、abstract和native修飾。我也不知道這個的意義所在。
當然官方定義說構造方法的主要作用是數據的初始化。我的理解是,既然要被繼承,公有的屬性肯定不可能賦值,要到子類實例化才能賦值。但是確實有一些屬性是特殊的,而且必須在一定範圍內才有效,為了防止賦予非法值。 如果你想學習Java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裏麵有大量的學習資料可以下載。
比如性別中性,歲數300歲等等。必須設定一個默認的安全值。可是又達不到finally的一個值得地步。這才有了構造方法大顯身手的意義。
通過類創建一個對象。如果類比較龐大,屬性比較多,方法比較多。記憶就會比較困難,很容易落下什麼。而且一個個調用屬性和方法很麻煩,能不能一下子全部調用過來。省的拉下了。這就是構造方法帶來的好處。
既然是調用的整個類的屬性與方法,那麼方法名就與類名保持一致。
而且因為屬性多種多樣。有int類型,有string類型。這樣你就無法確定返回值是哪個類型,幹脆就不定義返回類型。
第五步,參數列表。
為何要有參數。因為現實是多姿多彩的,需要很多的形容詞來修飾,而在編程中就需要很多的變量來修飾。比如:
public void sleep(){
System.out.println("我在睡覺");
}
需要一個變量來修飾睡覺,於是用一個參數。實際上就是定義一個變量類型。
public void sleep(String i){
System.out.println("我在"+i+"睡覺");
}
需要兩個變量,於是用兩個參數。實際上就是定義兩個變量類型。
public void sleep(String i,int j){
System.out.println("我在"+i+"睡覺"+j+"點起來")
有時需要更多的修飾,於是就有了更多的參數。這就是參數的存在意義。
通過類創建一個對象。如果類比較龐大,屬性比較多,方法比較多。記憶就會比較困難,很容易落下什麼。而且一個個調用屬性和方法很麻煩,能不能一下子全部調用過來。省的拉下了。這就是構造方法帶來的好處。
既然是調用的整個類的屬性與方法,那麼方法名就與類名保持一致。
而且因為屬性多種多樣。有int類型,有string類型。這樣你就無法確定返回值是哪個類型,幹脆就不定義返回類型。
根據參數的有無可以分為有參方法與無參方法,同樣可以喝返回值方法自由組合,構成有無參數有無返回值類型的方法。當然還有其他的組合。
第六步。方法體。
主要的區別就在於有無。也就是有具體的方法體以及沒有方法體。甚至都可以沒有大括號。小括號就能組成一個方法。 最簡單的方法就是方法名();
方法重載:從構造方法裏麵我們發現了方法的重載,方法名相同, 形參不同。而形參的不同又表示在: 1). 形參的個數不同 2). 形參的類型不同 3). 形參的順序不同。其實在調用Scanner的時候很類似,或者就是方法的重載。
Input.next()。這後麵可以跟不同的數據類型,與此類似jdk幫助文檔的每一個方法有很多方法名相同,但是因為數據類型不同而生出區別的不同方法,這些隻是因為調用接受的收據類型不同而成為同名的方法重載。這也跟java是強類型語言有直接關係。
從這裏我們也可以明白方法重載的意義了。就是接受不同的數據類型,接受不同數量的數據。完全沒必要挨個的定義方法名。在大型類中,方法少了還好說,多了光是起名字就要耗費大量腦細胞。
方法重寫。
出現在父子繼承類當中。類與對象當中,對象是類的實現,實例化。子類是父類的實例化。父類中的方法隻需要一個存在的概念。而到了子類當中就必然要求根據子類的不同而出現不同的方法實現。這就是方法的重寫,不過是為了更好的適用於子類而已就好像螞蟻到了中國就必須與中國實際相結合,做出佛.教中國化的改良一樣,現在世界上也沒有了佛.教,沒了螞蟻,而隻有中國才有,嗬嗬題外話。有助大家理解。
這樣一來重載出現在同類中,重寫出現在繼承父子類中。知道了這點,明白了存在的意義。才好記憶他們的其他區別。
方法的調用:
方法就好比武.器,屬性就好比子.彈。製造出來就是讓那來用的。不同的槍配不同的子彈,不同的搭配組合出來的效果不一樣。首先你就要會用。步.槍與機.槍的用法注意事項絕對不一樣。橡膠.彈與穿.甲彈的使用方法也絕對不同。
不同的方法與變量的使用也絕對不同。
就方法的調用來說,基本上就三種。
第一。本類中的諸多方法之間一般可以互相直接拿來使用。當然因為修飾符的權限不同。作用域可能不同。被static修飾的方法也可以直接拿來用。
第二種,間接使用。
在本類中用this調用。在父子類中用super調用。
第三,沒有明顯關係的類中。就必須首先創建要用方法所在類的對象,用變量名接受,然後才能調用。其實就是new關鍵字的妙用。接觸最早的new就是new Scanner(System.in)。當然這是係統的方法,我們一般都是自定義調用。通過實例化進行調用是最廣泛的調用方法,可以說是萬金油式的方法。
第四,其實還有一種調用的方法就是調用係統封裝好的方法,導入係統方法,這個才是精華。就是import java.util.*;這個也是重要的方法包。
最後更新:2017-05-11 14:01:48