構造器java
① java中構造器有什麼用
構造器最大的用處就是在創建對象時執行初始化,當創建一個對象時,系統會為這個對象的實例進行默認的初始化。如果想改變這種默認的初始化,就可以通過自定義構造器來實現。
構造器可以提供許多特殊的方法,構造器作為一種方法,負責類中成員變數(域)的初始化。
(1)構造器java擴展閱讀:
構造器分類:
C#的類有兩種構造器:實例構造器和預設構造器。
實例構造器負責初始化類中的實例變數,它只有在用戶用new關鍵字為對象分配內存時才被調用。而且作為引用類型的類,其實例化後的對象必然是分配在託管堆(Managed Heap)上。
預設構造器是在一個類沒有聲明任何構造器的情況下,編譯器強制為該類添加的一個無參數的構造器,該構造器僅僅調用父類的無參數構造器。
② 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 構造函數
③ java 構造器是什麼意思
構造器就是和類名相同但無返回類型的方法。用於當前或某一對象的實例化,並將當前或某一對象返回。要得到一個類的實例時,往往是要運行其構造函數的。
構造器是Java和C#學習中很重要的一個概念,構造器可以提供許多特殊的方法,構造器作為一種方法,負責類中成員變數(域)的初始化。實例構造器分為預設構造器和非預設構造器。
構造器最大的用處就是在創建對象時執行初始化,當創建一個對象時,系統會為這個對象的實例進行默認的初始化。如果想改變這種默認的初始化,就可以通過自定義構造器來實現。
(3)構造器java擴展閱讀:
1、構造器作用
構造器是為了創建一個類的實例。這個過程也可以在創建一個對象的時候用到:
Platypus p1 = new Platypus();。
構造器可以用來在初始化對象時初始化數據成員,一個類可以有多個構造器。一個類的構造器的名稱必須與該類的名稱一致。要退出構造,可以使用返回語句「return;」。
相反,方法的作用是為了執行java代碼。
2、修飾符,返回值和命名的不同
構造器和方法在下面三個方面的區別:修飾符,返回值,命名。和方法一樣,構造器可以有任何訪問的修飾: public, protected, private或者沒有修飾(通常被package 和 friendly調用).。
不同於方法的是,構造器不能有以下非訪問性質的修飾: abstract, final, native, static, 或者 synchronized。
返回類型也是非常重要的。方法能返回任何類型的值或者無返回值(void),構造器沒有返回值,也不需要void。
最後,談談兩者的命名。構造器使用和類相同的名字,而方法則不同。按照習慣,方法通常用小寫字母開始,而構造器通常用大寫字母開始。構造器通常是一個名詞,因為它和類名相同;而方法通常更接近動詞,因為它說明一個操作。
參考資料:網路-構造器
④ java中 構造器就是構造方法
其實你可以這樣理解,構造函數或者說構造方法是構造器的一種體現形式,構造器是真正識別new關鍵字並調用構造函數方法的,但是顯示的出現在我們理解中的構造器就是構造方法,對構造方法的設定就是對構造器的設置
⑤ java中,構造器是不是構造函數呢有什麼不同
構造器就是構造函數,還有人叫它構造方法,中文翻譯的問題。初始化除內了用構造方法初始化外還可以用容static{} 和{} 如:
class A {
static { 。。。。}
{。。。。}
}
當class載入內存時static{}就開時執行(不論有沒有實例化),且static{}只執行一次以後再實例化多少次也不會執行,{}和構造方法類似但如果既有構造方法也有{。。},先執行{。。}再執行構造方法。
⑥ JAVA構造器
//第一題
class S{
String s;//一個未初始化的String引用
}
class Test{
public static void main(String[] args){
S s=new S();
System.out.println(s.s);//列印出null
}
}
//第二題
class S1{
String s="a";//在定義時就被初始化了的String域
}
class S2{
String s;
//通過構造器回初始化的String域
public S2(String s){
this.s=s;
}
}
public class Test{
public static void main(String[] args){
S1 s1=new S1();
S2 s2=new S2("bbb");
System.out.println(s1.s);
System.out.println(s2.s);
}
}
//兩者區別:後者可答以通過main改變s的值,而前者s的值是寫死了的
⑦ Java中 構造器什麼時候用
當對象實例化時,必須要通過構造器。要麼有參,要麼無參。如果構造器被私有化,那肯定就會有public的get方法獲取當前對象的實例(單例)。
常用的構造器使用方法基本上都是為類的成員變數賦值,或者在實例化的時候做一些初始化。
public class User {
String name;
String age;
public User(String name, String age) {
this.name = name;
this.age = age;
System.out.println("這里是在實例化User對象時就會執行的");
System.out.println("比如為User的成員變數賦值");
System.out.println("當然也可以干點其他事情");
}
public static void main(String[] args) {
User user = new User("zhangsan", "18");
System.out.println(user.name);
}
}