回覆列表
  • 1 # 被你傷過的心好痛t6

    建構函式有沒有返回值:

    它是用來對類物件的一些欄位進行初始化用的,所以沒有必要有返回值。

    在建構函式執行的時候,可以使用this,所以說在執行建構函式的時候,類物件已經存在了,更說明類物件不是建構函式建立的,而是new運算子建立的。

    疑問在於如下的程式碼:

    String str = new String(content);

    new 的時候呼叫建構函式,返回給str;

    從語法上講,建構函式不允許有返回值,就算是 void 也不行。

    這裡的new 是呼叫建構函式,在堆裡分配了一個String物件,並讓str指向這個物件。實際上是那個 new 在起作用,而不是()在起作用。

    下面是因為原版說明,有興趣的自己看吧

    下面是構造方法的一些特點總結

    (1)構造方法的方法名必須與類名相同。

    (2)構造方法沒有返回型別,也不能定義為void,在方法名前面不宣告方法型別。

    (3)構造方法的主要作用是完成物件的初始化工作,它能夠把定義物件時的引數傳給物件的域。

    (4)構造方法不能由程式設計人員呼叫,而要系統呼叫。

    (5)一個類可以定義多個構造方法,如果在定義類時沒有定義構造方法,則編譯系統會自動插入一個無引數的預設構 造器,這個構造器不執行任何程式碼。

    (6)構造方法可以過載,以引數的個數,型別,或排列順序區分。

    當然

    public Long String(){ }

    這個算一個普通的方法,雖然和類重名,但卻是合法的普通方法,而不是構造方法了。

    如下的類可以正常編譯並執行,結果正確。請注意構造方法裡面的return;

    public class T {

    public T() {

    return; // 請注意這裡的return哦,這是合法的語句

    }

    public String T() {

    return 特殊的方法,和類名相同;

    }

    public static void main(String[] args) {

    System.out.println(new T().T());

    }

    }

    從另一個角度看,正是因為建構函式沒有返回值才需要這麼寫:

    String str = new String(content);

    否則,如果有返回值,應該如下寫:

    String str = String(content);

  • 中秋節和大豐收的關聯?
  • 給豬打避孕針什麼時候最佳?