Java 使用继承访问父方法

Java 使用继承访问父方法,java,inheritance,Java,Inheritance,我的类状态有3种方法: getPedestrianStatusText() getGatesStatusText() getDrawBridgePositionText() (每个方法的目的都是包含一个字符串,该字符串表示某个对象的状态,当按下按钮时,该字符串应该会更改) 我有一个类FileStatus,它扩展了Status,并按如下方式访问这些方法: public class FileStatus extends Status{ public FileStatus(){ } p

我的类状态有3种方法:

getPedestrianStatusText()
getGatesStatusText()
getDrawBridgePositionText()
(每个方法的目的都是包含一个字符串,该字符串表示某个对象的状态,当按下按钮时,该字符串应该会更改)

我有一个类FileStatus,它扩展了Status,并按如下方式访问这些方法:

public class FileStatus extends Status{

public FileStatus(){

    }

public void writeToFile(){
        String file_text = getPedestrianStatusText() + "     " + getGatesStatusText() + "     " + getDrawBridgePositionText();

    }
}
在一个单独的类中,这3个方法被访问并按预期运行,当按下一个按钮并调用它们时,它们会随着我对它们的编程而改变。我的问题是,当从FileStatus类访问这些方法时,返回的字符串不会像从其他类调用这些方法时那样改变。我怀疑我的继承中有错误,但我不确定问题出在哪里。任何建议都将不胜感激

这是我的状态类:

public class Status{

public Status(){
}



public String getGatesStatusText(){
    //returns a string with the status of the gates

    if(GatesOpen){

        gatesStatus="The gates are open";
    }
    else{

        gatesStatus="The gates are closed";
    }
    return gatesStatus;
}



public String getDrawBridgePositionText(){
    if(DrawbridgeUp){
        DrawBridgeStatusText="Drawbridge is up";
    }
    else{
        DrawBridgeStatusText="Drawbridge is down";
    }
    return DrawBridgeStatusText;
}

public String getPedestrianStatusText(){

    return pedStatusText;
}
}

这是一个单独的类,其中FileStatus被称为:

public class MenuBar extends JMenuBar {
DrawStatus draw;
public MenuBar(DrawStatus d){
    final FileStatus file = new FileStatus();

    });


    JMenuItem printStatus = new JMenuItem("Print Status");
    printStatus.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event){
            file.writeToFile();
        }
    });
} }

最后一个类,其中函数的行为符合预期:

public class DrawStatus extends JPanel{
Status status = new Status();


public DrawStatus(){

}


@Override
protected void paintComponent(Graphics g){
    super.paintComponent(g);

    g.drawString("SYSTEM STATUS: "+status.getGatesStatusText() + " | " +status.getPedestrianStatusText() + " | " + status.warningLightStatusText() + " | "+status.getDrawBridgePositionText(), 0, getHeight()-10);

}

我想你也必须分享
状态
类代码。。。您可能希望根据需要覆盖这3种方法。此外,您还需要共享使用Status和FileStatus实例的代码。问题的一个可能原因是您正在更新
DrawStatus.Status
中的值,并希望它们也在
FileStatus
中自动更新。
DrawbridgeUp
gatespen
pedStatusText
Status
的成员还是全局变量?如果他们是成员,那么你就必须停止使用继承,而是从Status合成FileStatus(无论如何这可能是一件好事)。我理解你对更新
DrawStatus.Status.Status中的值所说的话,但我不理解为什么这些值不会在
FileStatus
中继承,我认为通过扩展
Status
我的
FileStatus
类将继承
Status
中的值
gatespen
等是
Status
的成员,在类
Status
声明的正下方声明。