天天看點

Java基礎知識—類的深層結構

在java中,可以在同一個類中定義兩個或多個共享相同名稱的方法,隻要它們的參數聲明不同就可以。當出現這種情況時,這些方法就被稱為重載(overloaded),并且這一過程被稱為方法重載(method overloading).方法重載也是java支援多态性的方式之一。

當調用重載方法時,java所使用參數的類型和/或數量決定了實際調用是哪個版本的方法。是以,重載方法在參數的類型和/或數量方法必須有所差別。雖然重載方法可以傳回不同的類型,但是單靠傳回類型不足以區分方法的多個版本。當java遇到對重載方法的調用時,簡單地執行方法形參與調用中所使用的實參相比對的版本。

下面是一個示範方法重載的簡單例子:

Java基礎知識—類的深層結構
Java基礎知識—類的深層結構

如果你想學習java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裡面有大量的學習資料可以下載下傳。

可以看出,test()方法重載了4次。第1個版本沒有采用參數,第2個版本采用一個整型參數,第3個版本采用兩個整型參數,第4個版本采用一個double參數。雖然第4個版本的test()方法還傳回一個值,但是這與重載沒有什麼因果關系,因為傳回類型在重載版本的判斷中不起作用。

Java基礎知識—類的深層結構
Java基礎知識—類的深層結構

重載構造函數:

Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構

參數傳入的深入分析:

Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構

請記住:

當将對象引用傳遞給方法時,引用本身是使用值調用傳遞的。但是,由于傳遞的值引用一個對象,是以值的副本仍然引用相應實參指向的同一個對象。如果你想學習java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裡面有大量的學習資料可以下載下傳。

傳回對象:

方法可以傳回任意類型的資料,包括自己建立的類類型。例如下面的程式中,方法incrbyten()傳回一個對象,在該對象中,a的值比調用對象中的a的值大10.

Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構

遞歸:

Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構
Java基礎知識—類的深層結構

通路控制:

正如前天幾天知識所說的,封裝将操作資料的代碼和資料連結起來。但是,封裝提供了另外一個重要的特性:通路控制。通過封裝,可以控制程式的哪些部分可以通路類的成員。通過控制通路,可以防止誤用。例如,僅僅通過定義一套良好的資料通路方法,就可以防止對資料的誤用。是以,如果類的實作正确的話,類就建立了一個可以使用的“黑匣子”,但是其内部工作不允許修改。

Java基礎知識—類的深層結構

類中的 static

Java基礎知識—類的深層結構

類中的 final

Java基礎知識—類的深層結構

嵌套類 與 内部類:

Java基礎知識—類的深層結構