Во-первых, это довольно основная проблема, но я просто не могу показаться, чтобы получить его, нормально, так вот общий обзор моей программыметоды иерархии классов при вызове из других классов
|class A |
|new B();|
|new C();|
/ \
/ \
|Class B | |Class C |
|new D();| |method E(){}|
|
|Class D |
|Invokes method E|
Это мой иерархии программ, и я хочу вызывать нестационарный метод E из класса D, не создавая новый экземпляр класса C, есть ли способ сделать это или мне нужно перестроить иерархию классов.
** EDIT: ** Вот реальный код, чтобы отобразить мою проблему (без класса 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, нажав на кнопку
Ваша диаграмма ascii неясна. Не могли бы вы разместить фактический код? – Bohemian
Вы можете передать экземпляр класса 'C' из класса' A' в 'B'. Затем передайте этот экземпляр классу 'D' и вызовите' метод E' в классе 'D', не создавая экземпляр в классе' D'. – alayor