gpt4 book ai didi

java - 从其他类调用时的类层次结构方法

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

首先,这是一个非常基本的问题,但我似乎无法理解它,好的,这是我的程序的总体概述

       |class A |
|new B();|
|new C();|
/ \
/ \
|Class B | |Class C |
|new D();| |method E(){}|
|
|Class D |
|Invokes method E|

这是我的程序层次结构,我想从类 D 调用非静态方法 E,而不创建类 C 的新实例,有没有办法做到这一点,或者我是否必须重构我的类层次结构。

**编辑:**这里是显示我的问题的真实代码(尽管没有 B 类):

import javax.swing.JFrame;
import javax.swing.JSplitPane;

public class TheFrame extends JFrame{
public TheFrame(){
setTitle("Suduku Solver");
add(new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
new TextLabel(), new ChangeButton()));
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(300,300);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
new TheFrame();
}
}


import javax.swing.JLabel;
public class TextLabel extends JLabel{
public TextLabel(){
setText("This is the Label");
}
public void ChangeLabel(){
setText("Changed Label");
}
}

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class ChangeButton extends JButton {
public ChangeButton(){
setText("Click to change Label");
addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
//Invoke TextLabel changeText method here
}
});
}
}

我想通过单击按钮调用changeText方法

最佳答案

没有实例就无法调用非静态方法。这就是“没有商量余地”。

您必须重新设计您的类结构。

关于java - 从其他类调用时的类层次结构方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41645853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com