1. JAVA構造方法
構造方法必須滿足以下語法規則:
(1) 方法名必須與類名相同。
(2)不要聲明返回類型。
(3)不能被static、final、synchronized、abstract和native修飾。構造方法不能被子類繼承,所以用final和
abstract修飾沒有意義。構造方法用於初始化一個新建的對象,所以用static修飾沒有意義。多個線程不會同時創建內存地址相同的同一個對象,因此用synchronized修飾沒有必要。此外,Java語言不支持native類型的構造方法。
例:
public class Sample {
private int x;
public Sample() { // 不帶參數的構造方法
this(1);
}
public Sample(int x) { //帶參數的構造方法
this.x=x;
}
public int Sample(int x) { //不是構造方法
return x++;
}
}
拓展資料:
構造方法的訪問級別
構造方法可以處於public、protected、默認和private這四種訪問級別之一。本節著重介紹構造方法處於private級別的意義。
當構造方法為private級別,意味著只能在當前類中訪問它:在當前類的其他構造方法中可以通過this語句調用它,此外還可以在當前類的成員方法中通過new語句調用它。
在以下場合之一,可以把類的所有構造方法都聲明為private類型。
(1)在這個類中僅僅包含了一些供其他程序調用的靜態方法,沒有任何實例方法。其他程序無需創建該類的實例,就能訪問類的靜態方法。例如 java.lang.Math類就符合這種情況,在Math類中提供了一系列用於數學運算的公共靜態方法,為了禁止外部程序創建Math類的實例, Math類的惟一的構造方法是private類型的:
private Math(){}
abstract類型的類也不允許實例化。也許你會問,把Math類定義為如下abstract類型,不是也能禁止Math類被實例化嗎?
public abstract class Math{…}
如果一個類是抽象類,意味著它是專門用於被繼承的類,可以擁有子類,而且可以創建具體子類的實例。而JDK並不希望用戶創建Math類的子類,在這種情況下,把類的構造方法定義為private類型更合適。
(2)禁止這個類被繼承。當一個類的所有構造方法都是private類型,假如定義了它的子類,那麼子類的構造方法無法調用父類的任何構造方法,因此會導致編譯錯誤。把一個類聲明為final類型,也能禁止這個類被繼承。這兩者的區別是:
1)如果一個類允許其他程序用new語句構造它的實例,但不允許擁有子類,那就把類聲明為final類型。
2)如果一個類既不允許其他程序用new語句構造它的實例,又不允許擁有子類,那就把類的所有構造方法聲明為private類型。
由於大多數類都允許其他程序用new語句構造它的實例,因此用final修飾符來禁止類被繼承的做法更常見。
(3)這個類需要把構造自身實例的細節封裝起來,不允許其他程序通過new語句創建這個類的實例,這個類向其他程序提供了獲得自身實例的靜態方法,這種方法稱為靜態工廠方法。
參考資料:java 構造函數
2. java構造方法
在類里如果定義一個或多個構造方法,java不提供默認的構造方法,所以要加一個不帶參數的構造方法,可以試著把無參構造方法的刪了,然後從那new一個對象
3. JAVA的構造函數是怎麼寫的。萬分感謝。路過的請不要嘲笑%>_<%
JAVA的構造函數是:SetLocal EnableDelayedExpansion
set classpath=.
for %%c in (lib*.jar) do set classpath=!classpath!;%%c
set classpath=%classpath%;./classes;
java com.ham.server.Server。
1、無參構造方法
無參構造方法又分為隱式無參構造方法和顯示無參構造方法。
隱式無參構造方法
在定義類的時候,如果沒有給類定義一個構造方法,Java編譯器在編譯時會默認提供一個隱式的構造方法,它沒有任何參數,並且有一個空的方法體。例如,Person類中隱含一個無參構造方法,在main方法中可以通過new關鍵字來調用此默認的構造方法,代碼如下: