[英]How to read a variable from an abstract class?
是否可以從另一個類中讀取“ worldInfo”?
以下是包含它的類的一部分:
public abstract class World implements IBlockAccess{
protected WorldInfo worldInfo;
//=====Stuff=====
public World(ISaveHandler par1ISaveHandler, String par2Str, WorldSettings par3WorldSettings, WorldProvider par4WorldProvider, Profiler par5Profiler, ILogAgent par6ILogAgent)
{
this.worldInfo.setWorldName(par2Str);
}
}
我想在班上使用它來獲取名稱。 “ worldInfo.getWorldName”
編輯1:好的,我在與World相同的包中創建了一個類。“ World_Spy.class”
public class World_Spy extends World{
public World_Spy(ISaveHandler par1iSaveHandler, String par2Str,
WorldProvider par3WorldProvider, WorldSettings par4WorldSettings,
Profiler par5Profiler, ILogAgent par6iLogAgent) {
super(par1iSaveHandler, par2Str, par3WorldProvider, par4WorldSettings,
par5Profiler, par6iLogAgent);
}
@Override
protected IChunkProvider createChunkProvider() {
return null;
}
@Override
public Entity getEntityByID(int i) {
return null;
}
String TheName = "";
public void gotIt(){
TheName = this.worldInfo.getWorldName();
System.out.println(TheName);
}
}
但是當我從主要班級調用它時,它會使游戲崩潰。
World_Spy WName = new World_Spy(null, null, null, null, null, null);
關於參數嗎?
為了訪問worldInfo
您必須擴展World
但是將worldName
設置為World
構造函數的第二個參數,這意味着您必須在子類中知道它,所以..
對於所需的功能,可以將關鍵字protected更改為public,或者在類中創建public函數。 它看起來像這樣:
public String getWorldName(){ this.worldInfo.getWorldName(); }
該類是abstract
,因此無法啟動。 您可以從此類讀取static
變量,但不能創建此類的對象。 您可以將此可變變量設為static
,然后讀取它或繼承該類並使其成為對象,或使其非abstract
並使其成為對象。
這個變量保持不變嗎? 使其static
。
實際上, 保護意味着它可以由子類使用,也可以由同一包中的任何其他類使用。 所以是的,即使它們沒有繼承抽象類,您也可以在同一包中的所有類中使用它
如果滿足以下條件之一,則可以直接訪問該字段:
World
(繼承的受保護字段在派生類中可見, World
也不是最終的,並且具有非私有構造函數) 在該字段上將accessible屬性設置為true之后(只要安全管理器允許),還可以通過從任何其他類進行反射來訪問該字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.