![](/img/trans.png)
[英]Why can't I access my int array values that I made in my main method from another method? (beginner Java coder)
[英]Why can't I access my method?
我有一堂課
public abstract class BoardLocation
{
//...
}
還有一個
public abstract class Property extends BoardLocation
{
public abstract int getRentAmt();
}
最后,另一個...
public class Lot extends Property
{
@Override
public int getRentAmt()
{
//...
}
}
在我的Driver.java中,我正在做...
BoardLocation board[] = new BoardLocation[2];
board[0] = new Lot();
board[1] = new Lot();
但是當我嘗試打電話時...
board[0].getRentAmt();
我收到“找不到符號”的字樣,它表示board [0]是BoardLocation。
有什么原因嗎? 或任何修復?
數組元素的靜態類型為BoardLocation
。 沒有為此類型定義getRentAmt()
。 各個元素的確可能更專門,但是通過超類引用,您只能使用在超類型上聲明的方法。
如果需要編譯時訪問此方法,則該數組要么需要更特殊的類型( Property[]
),要么該方法需要移入超類。 如果您包含更多信息,則可能會出現其他選項。
因為在BoardLocation
類中未聲明getRentAmt()
方法。 您的元素類型是BoardLocation
並且編譯器不知道數組中確實存在Lot
。 編譯器知道您有一個BoardLocation
數組,如果要使用getRentAmt()
方法,則必須在BoardLocation
聲明它,然后在繼承的類中重寫它。
BoardLocation不知道在Property中聲明的方法! 嘗試:
Property board[] = new Property[2];
board[0] = new Lot();
board[1] = new Lot();
您的實際問題是糟糕的OOP設計。 嘗試再次定義您要解決的問題,並考慮使用接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.