簡體   English   中英

這是什么() ? 它可以有多個參數嗎?

[英]what is this() ? can it have multiple parameters?

我遇到了一個代碼,其中java中的this()方法采用三個參數,兩個是整數,第三個是布爾值。 這到底是什么意思呢 ? this()方法還有其他變體嗎? 赫拉是實際的代碼。

 public SegmentConstructor(int seqNum_, int length_) {
        this(seqNum_, length_, false);
    }

謝謝..

這意味着當前類中還有另一個具有該簽名的構造函數。

public SegmentConstructor(int seqNum_, int length_) {
    this(seqNum_, length_, false); // calls the constructor below.
}

public SegmentConstructor(int seqNum_, int length_, boolean required_) {
    seqNum = seqNum_;
    length = length_;
    required = required_;
}

this方法只是從另一個構造函數中調用類的一個構造函數的一種方法,以幫助避免代碼重復。 只能在構造函數的第一行上調用它-決不能在任何其他方法中調用它。

this只是調用另一個構造函數來運行。 因此,尋找具有該簽名的其他構造函數。

如前所述,這將調用另一個構造函數,主要是作為一種便捷方法。

瑣碎的例子:

class A {
 private int value;

 public A(int val) {
  value = val;
 }

 public A() {
  this(0); //0 as default
 }
}

通常,當最具體的構造函數(具有最多參數的那個構造函數)不只是賦值而是包含更多您不想重復/復制的邏輯時,您確實會使用對this()的調用。

僅僅因為它適合這里: super()也可以有參數,即,它使用子類的構造函數中的參數調用超類的構造函數。

這是一個構造函數調用。 如果您的類使用不同數量的參數實現不同的構造函數,則可以像這樣鏈接您的構造函數:

class A {
    public A(boolean arg) {
        ...
    }

    public A() {
        this(false); // invokes the constructor with the boolean argument
    }
}

有時,創建帶有不同參數的私有構造函數並為公共和/或受保護的構造函數提供其他/更少的參數並將對象構造委托給該私有構造函數是有意義的。

重要的是要知道在調用this(...)之前不能放置其他代碼。 但是,在調用this(...)之后,您可以執行任何其他構造函數中可以做的所有事情。

編輯:由於this(...)調用構造函數,因此只能從其他構造函數(屬於同一類)中調用它。

class MyClass {private int var1; private int var2; 私有布爾標志;

公共MyClass(int var1_,int var2_){this(var1_,var2_,false); }

公共MyClass(int var1_,int var2_,boolean flag_){var1 = var1_; var2 = var2_; 標志= flag_; }

public String toString(){return(new Boolean(flag).toString()); }

公共靜態無效main(String [] args){MyClass my = new MyClass(5,6); System.out.println(my); }

}

這樣就行了。

this()不是方法,而是一個保留關鍵字,指向同一類的重載構造函數。 您傳遞的參數數量應指向該類中定義的現有對應構造函數。

super()也具有語義,但是構造函數是在其父層次結構之一中定義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM