回覆列表
  • 1 # WEB開發李家靖

    構造器,又稱為建構函式,是一種特殊的函式。主要是用來JAVA在建立物件時初始化物件,即為物件成員變數賦初始值。建構函式的名稱與類名相同,可過載多個相同名稱的建構函式。在JAVA中,建構函式普遍稱為構造方法。

    構造器特性:

    1.當在類中沒有顯式定義任何構造器,系統會預設提供一個無參的構造器。

    2.如果我們的類當中顯式定義了構造器(不論是有參還是無參),那麼系統不會再提供預設的無參構造器。

    作用:構建創造一個物件。同時可以給我們的屬性做一個初始化操作。

    構造器和方法的區別:老外說過一句話:我們說構造器是一種方法,就如同講澳洲的鴨嘴獸是一種哺育動物。

    1、功能和作用的不同

    構造器是建立一個類的例項。用來建立一個物件,同時給物件的屬性做初始化。

    相反,方法的作用是僅僅是功能函式,為了執行java程式碼。

    2、修飾符,返回值和命名的不同

    構造器和方法在下面三個區別:修飾符,返回值,命名。

    和方法一樣,構造器可以有任何訪問的修飾符: public, protected, private或者沒有修飾(通常被package 和 friendly呼叫). 不同於方法的是,構造器不能有以下非訪問性質的修飾: abstract, final, native, static, 或者 synchronized

    3、返回型別

    方法必須有返回值,可以是如何型別的返回值或者無返回值(void)。但是構造器可以沒有返回值,也不需要void。

    4、命名

    構造器的名稱和類名相同,而方法則不同。按照習慣,方法通常用小寫字母開始(駱駝命名法),而構造器通常用大寫字母開始(帕斯卡命名法)。

    構造器通常是一個名詞,因為它和類名相同;而方法通常更接近動詞,因為它說明一個操作。

    5、呼叫

    構造器:只有在物件建立的時候呼叫,只會呼叫一次。

    一般方法:在物件建立之後才可以呼叫,並且可以呼叫多次。

    6、"this"的用法的不同

    構造器和方法使用關鍵字this有很大的區別。方法引用this指向正在執行方法的類的例項。靜態方法不能使用this關鍵字,因為靜態方法不屬於類的例項,所以this也就沒有什麼東西去指向。構造器的this指向同一個類中,不同引數列表的另外一個構造器。在構造器中,使用關鍵字this必須放在第一行,否則將導致一個編譯錯誤。

    7、"super"的用法

    構造器和方法,都用關鍵字super指向超類,但是方法不一樣。方法用super去執行被過載的超類中的方法。構造器使用super去呼叫超類中的構造器。而且super這行程式碼必須放在第一行,否則編譯將出錯。

    8、繼承

    構造器是不能被繼承的。子類可以繼承超類的任何方法。

    總結:

    雖然構造器(構造方法)有許多和普通方法一樣的特點,但是使用上和功能都不一樣,所以使用的環境和效果都不一樣。在學習過程中要理解好建構函式的作用和靈活使用,可以快速實現物件的屬性初始化,避免在開發過程中出現光定義未初始化物件例項的屬性的問題。

  • 2 # IT人劉俊明

    Java中的構造器和方法都能執行功能語句,但是功能劃分上卻有很大的不同,理解構造器和方法的應用是初學Java的一個重點內容。在描述構造器和方法的概念之前,我們要首先了解類和物件的概念,以及方法和他們之間的關係。

    類和物件

    我們先看一下Java官方(Oracle公司)給出的定義:

    簡單的概括一下這5點描述:

    類是模版;物件是在模版的基礎上創建出來的;類只有一個但是物件有很多;方法定義了類的功能(操作);方法必須屬於某個類。

    也可以這樣理解:

    類是某一類事物概念層次上的抽象;物件是類的具體實現;一個類可以建立很多物件;方法是類中功能的具體描述;方法只能定義在某個類中。

    方法(method)

    以上的描述中,強調了方法是功能的定義,一個方法代表了類中的一個功能。我們看一下方法的定義結構:

    如果不考慮封裝,我們可以看一個類的定義、物件的建立以及方法的呼叫:

    構造器和麵向物件設計

    Java中有四個基本概念,分別是類、物件、屬性和方法,Java還有三大特徵,分別是封裝、繼承和多型。

    而構造器和方法則是貫穿這四個基本概念和三大特徵的關鍵概念,理解構造器就理解了物件,而理解了方法則理解了面向物件程式設計。封裝、繼承和多型要以方法為體現形式,而類和物件的最終目的則是為了方法的呼叫。

    構造器的目的是為了建立物件,同時要執行物件的初始化任務。看一下Java官方對構造器的要求:

    簡單的說就是構造器的名字必須與類名完全一致(包括大小寫),構造器沒有返回值。

    看一個具體的構造器應用:

    例子中定義了兩個構造器分別對應於不同的初始化任務,而這被稱為構造器過載。

    看一下構造器的任務描述:

    簡單的說,構造器的任務就是完成物件的建立和初始化,這就是構造器的任務。隨著學習的深入對初始化這個概念的理解也會逐漸具體化,初期初始化的是屬性,後期需要初始化的往往是各種資源(IO、網路、資料庫連線等等)。

    總結

    經過以上分析,可以得出一個明確的結論:構造器的任務是為了完成物件的建立,而方法的任務則是描述物件的功能。構造器必須先於方法之前被執行,而方法則是透過物件來進行呼叫的。

    構造器和方法中都可以定義功能語句,但是構造器中的功能語句是為了初始化任務,並不會定義具體的業務邏輯。而方法中定義的則是具體的業務邏輯,方法則按需呼叫。

    我始終認為,空構造器是最完美的構造器!就像那句經典的話:Less is More!

    另外,一個方法只描述一個功能,如果一個方法描述了多個功能,那麼就把這個方法拆開!

  • 3 # Java實戰技術

    構造器是一種特殊的方法,通常又稱為構造方法,方法名同類名,它沒有返回值,用於構建例項物件,在沒有顯示定義一個構造方法的情況下,每個類都會有一個無參預設構造方法,當顯示重定義後,預設方法將不再有。

    而其它普通方法沒有這些限制!

  • 中秋節和大豐收的關聯?
  • 什麼是木材乾餾?