[英]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.