簡體   English   中英

超類中的Java構造函數

[英]java constructor in super classes

以下代碼是一個測試程序。 為什么我不能在此程序中使用A(int a)?

public class A {
    int a;
    void meth(int b) {
        a+=b;
    }
    A(int a) {
        this.a=a;
    }
}

class B extends A {
    int a;
    void meh2(int b) {
        a+=b;
    }
}

為什么不能將參數傳遞給構造函數? 是什么原因 Netbeans錯誤消息:

tma1.A類中的構造函數A不能應用於給定類型; 必需:發現整數:無參數原因:實際和形式參數列表的長度不同

在類B中,您需要構造函數。 如果您不能從B調用A,那只是因為您要擴展類A,所以您需要使用super,它引用了superclass。 例如,B可以是:

    class B extends A {
    B(int a) {
//You can put additional code here

// This calls the constructor of A
        super(a);

//You can put additional code here
    }
    int a;
    void meh2(int b) {
        a+=b;
    }
}

否則,如果您沒有在代碼中省略某些內容,則需要為B類中的變量a分配一些內容

除非類具有已定義的構造函數,否則它將自動具有僅調用super()的無參數構造函數。

您的編譯器發出的抱怨似乎是:“您的無參數構造函數(您看不到)正在調用不存在的父無參數構造函數。”

A沒有一個無參數的構造函數,因為沒有定義的另一個(這樣Java沒有創建一個)。

暫無
暫無

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

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