UML로 배우는 클래스 상속 구조(Inheritance)

kyw·2025년 9월 17일

Java

목록 보기
4/13

UML 클래스 다이어그램을 통해 자바의 객체 지향 프로그래밍(OOP)의 핵심 개념인 상속의 구조와 특징을 학습하였다.각 클래스 간의 관계를 시각적으로 떠올리는 것과, 클래스 간의 관계를 시각적으로 이해하고 코드 재사용성과 계층 구조의 중요성을 깨달았다.

💻 간단한 코드로 표현하기
다이어그램을 실제 자바 코드로 표현하면 다음과 같다.

// 슈퍼클래스 Human
class Human {
    private int age;
    private String name;

    public void eat() {
        System.out.println("밥을 먹는다.");
    }

    public void sleep() {
        System.out.println("잠을 잔다.");
    }
}

// Human을 상속받는 Man
class Man extends Human {
    private int power;

    public void run() {
        System.out.println("달린다.");
    }
}

// Human을 상속받는 Woman
class Woman extends Human {
    private String food; // [0..1]이므로 null일 수 있음

    // Woman 고유의 메서드가 다이어그램에 없으므로 생략
}

// Man을 상속받는 SuperMan
class SuperMan extends Man {
    private boolean fly;

    public void space() {
        System.out.println("우주로 날아간다.");
    }
}

// Woman을 상속받는 WonderWoman
class WonderWoman extends Woman {
    private boolean swim;

    // WonderWoman 고유의 메서드가 다이어그램에 없으므로 생략
}

public class Main {
    public static void main(String[] args) {
        System.out.println("--- SuperMan 객체 테스트 ---");
        SuperMan superman = new SuperMan();
        superman.eat();   // Human으로부터 상속
        superman.run();   // Man으로부터 상속
        superman.space(); // 자신의 메서드

        System.out.println("\n--- WonderWoman 객체 테스트 ---");
        WonderWoman wonderwoman = new WonderWoman();
        wonderwoman.eat();   // Human으로부터 상속
        wonderwoman.sleep(); // Human으로부터 상속
        // wonderwoman.run(); // Man의 메서드이므로 호출 불가 (컴파일 에러)
    }
}
  1. 클래스 상속 관계 파악
  • 공통 부모(슈퍼클래스): HumanManWoman의 공통 부모 클래스다.
  • 자식 클래스: Man WomanHuman의 속성(age, name)과 기능(eat(), sleep())을 모두 물려받는다. 이것이 바로 "IS-A" 관계다. (Man is a Human, Woman is a Human)
  • 상속의 특징

    • 자식 클래스는 부모 클래스의 public 또는 protected 멤버(필드, 메서드)를 그대로 사용할 수 있다.

    • 다이어그램에서 Human의 age, name 필드와 eat(), sleep() 메서드를 Man과 Woman이 모두 상속받는다.

상속 관계가 깊어질수록, 다이어그램을 통해 멤버의 상속 흐름을 추적하는 것이 코드의 전체 구조를 이해하는 데 큰 도움이 되었다. 앞으로는 코드를 작성하기 전에 간단하게라도 클래스 다이어그램을 그려보는 습관을 들여야겠다.

profile
作心百日

0개의 댓글