我正在學習Java中的繼承,并試圖解決以下代碼中的錯誤:
public static void main(String[] args) {
Yellow yellow=new Yellow("yellow");
yellow.ChangeColor();
}
abstract class SpecialColor{
String color;
SpecialColor(String color){
this.color=color;
}
abstract void ChangeColor();
public String ShowColor(String color) {
return color;
}
}
class Yellow extends SpecialColor{
Yellow(String color) {
super(color);
}
@Override
void ChangeColor() {
color="yellow";
System.out.println("The color is " color);
}
}
我正在嘗試做的任務基本上是說我需要創建一個具有 2 個屬性的抽象類 SpecialColor - 顏色名稱(字串)和兩個方法 - 抽象 void ChangeColor(),另一個顯示顏色名稱,而黃色類擴展了這個類和實作抽象方法,名稱需要更改為“黃色”,并在main中顯示這些類的使用。我遇到的錯誤出現在 main 方法的第一行代碼中 - “沒有可訪問的封閉型別實體”,我試圖解決這個問題,使 Yellow 類成為靜態,但隨后在 super(color) 行上彈出一個新錯誤上面寫著“由于某些中間建構式呼叫,沒有可用的 sestijanuar8 型別的封閉實體”。我很難理解抽象類和方法,所以任何形式的幫助都將不勝感激!
uj5u.com熱心網友回復:
您的類在另一個類中,它們不是靜態的,因此它們是內部類。這意味著它們只能通過參考包含類的實體來實體化。
要么將它們移出包含類,要么宣告它們static。然后,您將能夠實體化它們。
uj5u.com熱心網友回復:
由于您的錯誤訊息“沒有可訪問的封閉型別實體”,我可以推斷您的所有代碼都在封閉類中,這是有道理的,因為否則您的main方法不在類中,這是不允許的。
使類SpecialColor和Yellow靜態。如果你不這樣做,那么該類是封閉類的特定實體中的一個,你沒有它,因為你在main一個靜態方法中。
如果你做了其中一門課static而不是另一門課,那么你仍然會遇到同樣的問題,只是可能在不同的位置。
您所寫的任何內容都沒有表明封閉類實體對于您的類的操作是必需的,因此只需將它們都設為static,以便它們不依賴于您未使用的封閉類的實體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/407834.html
標籤:
下一篇:關于UML類圖中關聯類的問題
