我有一个名为Message
的超类,其字段为String msgType
,并且有一个名为ConnectMessage
的子类对其进行扩展,其中包含了字段String pos_X
。ConnectMessage
的构造函数为:
public ConnectMessage(String msgType, String x){
super(msgType);
this.pos_X = x;}
我在主线程中调用:
clientMessage = Message.fromString(inputString);
其中
fromString
创建如下的ConnectMessage
实例:ConnectMessage cm = new ConnectMessage(str1, str2);
return cm;
但是,当在主线程中调用
s = clientMessage.pos_X
时,出现编译器错误,表示类pos_X
中没有变量Message
。继承在这里如何工作,我该如何解决,以便语句clientMessage.pos_X
表示在类pos_X
中定义的ConnectMessage
? 最佳答案
很明显:
您将clientMessage
声明为Message
类。此类没有名为pos_x
的字段。
如果要访问该字段,则必须执行以下任一操作:
将pos_x
字段拉至基类
将clientMessage
强制转换为ConnectMessage
,即((ConnectMessage)message).pos_x
当然,我认为该领域是公开的。
问候