簡體   English   中英

Java中如何調用構造函數

[英]How to call Constructors in Java

我在java中有以下代碼:

// SingleMaltView class
class abc {
    public abc(display p) {
        // display is another class.
    }
}

class sample {
    public static void main(String[] args) {
        abc ob = new abc(); // error
    }
}

如何調用abc類的構造函數?

你的構造函數有一個參數/參數,使用它:

public abc(display p)
//         ↑  here!!!!

這意味着你必須提供一個display對象來創建abc對象,所以在 main 方法中你必須做這樣的事情:

public static void main(String[] args) {
    display d = new display(); // assuming display has no-argument constructor
    abc ob = new abc(d);   // NO error! :)
}

注意事項:

  • 按照約定,java 對象以UPPERCASE開頭,因此文件和類的名稱應該是DisplayAbc (或ABC )。
  • 如果您沒有將任何代碼放入構造函數中,請不要創建它
  • java 提供了一個默認的空構造函數來在您不創建任何對象時實例化您的對象。

如果您不在類中提供構造函數,編譯器默認插入無參數構造函數,但如果您提供了,則編譯器不會插入默認構造函數。 在這里,您正在創建一個存在參數化構造函數的類的對象,並且您正在創建沒有參數的 ABC 類的對象,因此編譯器無法找到沒有參數的構造函數,因此在代碼下方給出錯誤可以解決這個謎語。

    public abc()    // another constructor
    {

    }

或更改創建類型

     public static void main(String[] args)
     {
              Display d =new Display();
              abc ob = new abc(d);   // error
     }

在這里,您正在調用abc 類中不存在的默認構造函數。 相反,您只有一個參數化的構造函數。

public static void main(String[] args) {
    abc ob = new abc();   // error
} 

在這里,您正在創建一個沒有參數的對象。

所以你應該像這樣通過這里,

display obj = new display();
abc ob = new abc(obj);

我們可以通過兩種方式定義構造函數:(i) 默認構造函數 (ii) 參數化構造函數

(i) 默認構造函數語法:ConstructorName() {Statements.. }

(ii) 參數化構造函數語法:ConstructorName(Parameter/Arguments) {Statements.. }

* 調用構造函數 ClassName 引用變量的語法 = new TypeOfConstructor()

*調用作用域下定義的構造函數的變量和方法,使用引用變量調用。

注意:構造函數沒有任何返回類型和訪問說明符

暫無
暫無

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

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