簡體   English   中英

這個java代碼有什么問題?

[英]What is the wrong with this java code?

我正在學習java。 我正在閱讀的書有一個問題,請問以下代碼有什么問題? 我已經在NetBeans中鍵入了代碼,我可以看到該錯誤,但是為什么導致此錯誤,如何解決?

該錯誤在代碼public A(int t)突出顯示,並說

B類的構造函數B不能應用於給定類型,需要int,找不到參數,原因是實際參數和形式參數列表的長度不同。

這是代碼:

public class Test {
    public static void main(String[] args) {
       B b = new B(5);
    }
}

class A extends B {
    public A(int t)  {
        System.out.println("A's constructor is invoked");
    }
}

class B  {
    public B(int k)   {
        System.out.println("B's constructor is invoked");
    }
}

當您的super class具有args constructor並且沒有no-args構造函數時,您必須使用來自子類構造函數的super(args)調用顯式調用它

class A extends B {
     public A(int t)  {
         super(t);
            System.out.println("A's constructor is invoked");
        }

}

您需要將超類的構造函數作為A(int)的第一個語句來調用:

public A(int t)  {
   super(t);
   System.out.println("A's constructor is invoked");
}

B類已定義了構造函數,因此它沒有公共的隱式默認構造函數(無參數)。 如果零參數超類構造函數不可用,則所有子類構造函數都必須通過super(t)顯式調用超類構造函數。

B類只有一個帶有int參數的構造函數。 另一方面,類A中的構造函數(隱式)嘗試在A的超類(即B)中調用不帶參數的構造函數。 這是錯誤的原因。 至少有兩種方法可以解決此問題:

  1. 在類B中創建一個無參數的構造函數。

  2. 顯式調用B類中的構造函數,該構造函數將int作為參數。 您可以使用super關鍵字進行此操作。

暫無
暫無

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

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