1. 一個類中能有多重構造方法嗎
能啊
構造方法是一種特殊的方法,與一般的方法不同是:
1.構造方法的名字必須與配游定義他的類名完全相同,沒有返回類型,甚至連void也沒有。
2.構造方法的調用是在創建一個對象時使用new操作進行的。構造方法的作用是初始化對象。
3.不能被static、final、synchronized、abstract和native修飾。構造方法不能被子類繼承。
構造方法可以被重載。沒有參數的構造方法稱為默認構造方法,與一般的方法一樣,構造方法可以進行任何活動,但是經常將他設計為進行各種初始化活動,比如初始化對象的屬性。
在Java中,任何變數在被使用前都必須先設置初值禪游.Java提供了為類的成員變數賦初值的專門功能:構造方法(constructor)構造方法是一種特殊的成員方法,它的特殊性反映在如下幾個方面:
(1)構造方法名與類名相同.
(2)構造方法不返回任何值,也沒有返回類型.
(3)每個類可以有零個或多個構造方法.
(4)構造方法在創建對象時自動執行,一般不能顯式地直接調用.
下邊是線程
線程(thread),有時被稱為輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以並發執行。由於線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。
線程是程序中一個單一的順序控制流程.在單個程序中同時運行多個線程完成不同的工作,稱為多線程.
線程和進程的區別在於,子進程和父進程有不同的代碼和數據空間,而多個線程則共賀賣銷享數據空間,每個線程有自己的執行堆棧和程序計數器為其執行上下文.多線程主要是為了節約CPU時間,發揮利用,根據具體情況而定. 線程的運行中需要使用計算機的內存資源和CPU
線程的周期
新建 就緒 運行 阻塞 死亡
線程調度與優先順序
有線程進入了就緒狀態,需要有線程調度程序來決定何時執行,根據優先順序來調度.
線程組
每個線程都是一個線程組的一個成員,線程組把多個線程集成一個對象,通過線程組可以同時對其中的多個線程進行操作.在生成線程時必須將線程放在指定的線程組,也可以放在預設的線程組中,預設的就是生成該線程的線程所在的線程組.一旦一個線程加入了某個線程組,不能被移出這個組.
2. 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 構造函數
3. java中構造方法一個類裡面可以有多個
說構造方法之前,先說一下方法的重載
比如:
public Student(){} //無參構造方法
public Student(String name){} //有一個String類型參數的構造方法
他們兩個的共同特點是Class名稱相同,都是Student,但是參數列表中的參數不同,這就是Java中對於方法的重載。
有了重載的概念,也就是說只要參數列表不同,就可以有無盡的構造方法可以重載。
希望這些對你學習Java有所幫助.
4. java中一個類中能如何聲明多個構造方法
直接聲明就可以了如
publuc ClassName(){
}
public ClassName(int i){
}
直接寫就可以了 就是方法的重寫啊
5. 在構造方法中使用this調用其他構造方法那麼如果有多個構造方法this該怎麼寫
其實很簡單,因為在同一個類中不同的構造方法只是參數不同而已,這個屬於方法的遲睜重載調用的時候參數不一遲旦乎樣就知道是調用哪一個構造函數,例如:
public Di(){
System.out.println("構造函數一");
}
public Di(int i){
System.out.println("構造函數二");
this.Di();
}
只需要根據它參數不同,傳入同類型的參數就可以調碼悉用該方法
6. eclipse中如何為類快速添加多個構造方法
新建一個類為如下的三個屬性設置構造方法
7. java的構造函數怎麼定義多個
構造方法是在產生對象時被java系統自動調用的,我們不能在程序中像調用其他方法一樣去調用構造方法(必須通液碰過關鍵詞new自動調用它)。但我們可以在一個構造方法里調用雹帆其他重載的構造方法,不是用構造鬧肆談方法名,而是用this