[java] JavaFX 상속과 다형성 활용

JavaFX는 Java 기반으로 만들어진 GUI(Graphical User Interface) 응용 프로그램을 개발하기 위한 방법 중 하나입니다. 이를 통해 풍부한 그래픽 요소와 상호작용할 수 있는 사용자 인터페이스를 생성할 수 있습니다. 상속과 다형성은 JavaFX에서 많이 활용되는 중요한 개념 중 하나입니다. 이번 포스트에서는 JavaFX에서 상속과 다형성을 어떻게 활용할 수 있는지 알아보겠습니다.

상속(Inheritance)을 통한 JavaFX 클래스 확장

JavaFX에서는 클래스를 상속하여 새로운 클래스를 구현할 수 있습니다. 상속을 통해 기존 클래스의 속성과 동작을 상속받아 새로운 클래스를 확장할 수 있습니다. 이를 통해 코드의 재사용성과 유지보수성을 개선할 수 있습니다.

예를 들어, Button 클래스를 상속하여 새로운 CustomButton 클래스를 구현하고자 한다고 가정해봅시다. 이 경우, CustomButton 클래스에서는 Button 클래스가 가지는 기능을 그대로 사용할 수 있으면서 추가적인 기능을 구현할 수 있습니다. 예를 들어, CustomButton 클래스에서는 클릭 이벤트 발생 시 특정 동작을 수행하도록 구현할 수 있습니다.

public class CustomButton extends Button {
    // CustomButton에 특정 기능들을 추가적으로 구현
    // ...
}

상속을 통해 CustomButton 클래스는 Button 클래스의 모든 속성과 메소드를 상속받습니다. 즉, Button 클래스의 속성들을 직접 접근할 수 있으면서 필요에 따라 추가적인 기능을 구현할 수 있습니다.

다형성(Polymorphism)을 통한 JavaFX 요소 관리

JavaFX에서는 다형성을 이용하여 여러 요소들을 효율적으로 관리할 수 있습니다. 다형성은 같은 부모 클래스를 상속받은 여러 자식 클래스 객체들을 동일한 타입으로 다룰 수 있는 능력을 말합니다.

예를 들어, Node 클래스는 JavaFX의 모든 GUI 요소들의 조상 클래스입니다. Node 클래스를 상속받은 클래스들은 모두 Node 타입으로 다룰 수 있습니다. 이를 통해 여러 요소들을 동일한 컬렉션에 저장하고 관리할 수 있습니다.

ArrayList<Node> nodes = new ArrayList<>();
nodes.add(new Button());
nodes.add(new Label());
nodes.add(new TextField());

for (Node node : nodes) {
    node.setStyle("-fx-background-color: yellow");
}

위의 예시에서 nodes 리스트에는 Button, Label, TextField 객체들이 모두 Node 타입으로 저장됩니다. 따라서 for-each 루프를 통해 모든 요소들에 대해 동일한 동작을 수행할 수 있습니다. 이는 코드의 재사용성과 유지보수성을 개선시키는데 도움을 줍니다.

참고 문서