여기를 둘러 보았는데 제 질문에 대한 답을 찾을 수 없었습니다. Java의 수퍼 클래스에서 하위 클래스 메서드를 어떻게 호출합니까?Java의 수퍼 클래스에서 하위 클래스 메서드를 어떻게 호출합니까?
기본적으로 내가 원하는 것은 : String
을 명령의 매개 변수로 사용하는 exec
이라는 메서드가 있습니다. 서브 클래스 이름을 미리 알지 못하고 수퍼 클래스에서 개발자가 오버라이드 한 서브 클래스에서 exec
메서드를 호출 할 수 있기를 원합니다.
이것은 마치 Thread
클래스의 작동 방식과 같습니다. 나는 내가 찾은 모든 대답이 무엇인지 찾고 싶지 않다. 바로 Superclass object = new Subclass();
이고, 그 후에는 object.method();
으로 전화하면된다.
이
는 수퍼import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.input.*;
import javafx.scene.text.Text;
public abstract class Console extends Application {
private String title;
private static Text output = new Text();
public void create(String title) {
this.title = title;
launch();
}
public void start(Stage stage) {
stage.setOnCloseRequest((WindowEvent event) -> {
System.exit(0);
});
stage.setTitle(title);
stage.setResizable(false);
Group root = new Group();
Scene scene = new Scene(root, 800, 400);
stage.setScene(scene);
ScrollPane scroll = new ScrollPane();
scroll.setContent(output);
scroll.setMaxWidth(800);
scroll.setMaxHeight(360);
TextField input = new TextField();
input.setLayoutX(0);
input.setLayoutY(380);
input.setPrefWidth(800);
scene.setOnKeyPressed((KeyEvent event) -> {
if(event.getCode() == KeyCode.ENTER) {
exec(input.getText());
input.clear();
}
});
root.getChildren().add(scroll);
root.getChildren().add(input);
stage.show();
}
public static void appendOutput(String value) {
Platform.runLater(() -> {
output.setText(output.getText() + "\n" + value);
});
}
protected abstract void exec(String command);
}
간단한 답 : 당신은 표시 할 코드가 있습니까? – Coffee
그렇지 않습니다. 슈퍼 클래스는 그 서브 클래스에 관해서는 아무것도 알지 못한다. –
당신은 상속을위한 것이 아닙니다. – alfasin