gpt4 book ai didi

java - 访问覆盖方法java中声明的方法

转载 作者:行者123 更新时间:2023-11-29 02:59:29 25 4
gpt4 key购买 nike

我在从另一个类访问 main 中声明的对象时遇到了一些麻烦:

public static void main(String[]args)
{
Knight knight=new Knight();
Room2 room2=new Room2()
}

问题是我不能在这个特定方法中将对象作为参数传递,因为它是一个 actionListener 重写方法所以像这样的 Accessing objects of other classes行不通。

public void actionPerformed(ActionEvent e)
{
if(e.getSource()==attack)
{
knight.getHealth();
}
}

我不能在 ActionEvent e 参数之后传递任何额外的东西所以我想问一下 knight 对象是否有可能在此类中被识别,或者我是否必须做一些完全不同的事情?谢谢

编辑:主要方法是简单地创建角色对象,例如 knight,这是一个具体的类:

public class Room2 extends JFrame implements ActionListener{

private JButton attack;
private JButton defend;
//private JLabel item1read;

CardLayout cl=new CardLayout();
GridBagConstraints gb=new GridBagConstraints();
JPanel panel =new JPanel();

public Room2()
{
//******************************
battlePanel.setLayout(new GridBagLayout());

attack=new JButton("Attack");
gb.gridx=1;
gb.gridy=1;
gb.insets=new Insets(10,10,10,10);
attack.addActionListener(this);
battlePanel.add(attack,gb);

defend=new JButton("defend");
gb.gridx=1;
gb.gridy=2;
battlePanel.add(defend,gb);
}

public void actionPerformed(ActionEvent e)
{
if(e.getSource()==attack)
{
knight.getHealth();
}
}
}

最佳答案

根据您的代码,您可能希望将 Knight 实例传递到 Room 实例中,也许是通过其构造函数:

private Knight knight;

public Room2(final Knight knight) {

this.knight = knight;

battlePanel.setLayout(new GridBagLayout());
attack=new JButton("Attack");
gb.gridx=1;
gb.gridy=1;
gb.insets=new Insets(10,10,10,10);
attack.addActionListener(this);
battlePanel.add(attack,gb);
defend=new JButton("defend");
gb.gridx=1;
gb.gridy=2;
battlePanel.add(defend,gb);

public void actionPerformed(ActionEvent e) {
if(e.getSource()==attack){
knight.getHealth();
}
}
}

并且在创建的时候传入:

Room room = new Room(knight);

例如,

public static void main(String[]args) { 
Knight knight=new Knight();
Room2 room2=new Room2(knight);
}

更好的是,如果 Room2 代表一个物理房间,而骑士代表一个真正的骑士,那么我的模型将基于现实——骑士并不总是在房间内,所以我的代码基于在这个现实上。也许给 Room2 一个 enter(...)exit(...)方法对,允许GameManager类调用这些方法的能力。房间也可以有一个 public List<Participants> listParticipants()或者类似的方法,可以列出所有骑士、怪物或任何碰巧在那个房间里的东西。那么房间行为可能取决于它的居住者。

同样,您可以为所有参与者提供一个位置字段以及一个 setLocation(...)。方法和 getter 方法,这样所有参与者的行为(包括骑士的行为)都可以根据他们的位置而改变。

关于java - 访问覆盖方法java中声明的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35927933/

25 4 0
文章推荐: java - Alfresco java webscript 的 ServiceRegistry 为空
文章推荐: iOS:webview 滑动手势
文章推荐: java - 从 FireBase 内部类中检索 ArrayList