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