[英]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)中調用不帶參數的構造函數。 這是錯誤的原因。 至少有兩種方法可以解決此問題:
在類B中創建一個無參數的構造函數。
顯式調用B類中的構造函數,該構造函數將int作為參數。 您可以使用super
關鍵字進行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.