我有一个名为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


当然,我认为该领域是公开的。

问候

09-11 12:04