[Java] 5. 1 상속

5. 1 상속

Java 언어에서는 여러 클래스의 공통점을 기반 클래스에 정의하고 파생 클래스를 정의할 때 기반 형식에서 확장하여 추가 및 변경할 수 있습니다. UML에서는 기반 클래스와 파생 클래스 사이에 삼각형과 실선으로 상속을 일반화 관계로 표현하며 “피아니스트는 음악가이다.”처럼 두 형식 사이에 “이다.(is a)”로 나타낼 수 있을 때 사용합니다.

[그림 5.1] UML에서 일반화 관계
[그림 5.1] UML에서 일반화 관계

Java 언어에서는 파생 클래스를 정의할 때 어떤 형식을 기반으로 할 것인지 extends 키워드를 이용하여 표현합니다.

class 파생 클래스명 extends 기반 클래스명{

}

예를 들어 음악가 형식에 “연주하다.” 메서드를 정의하고 음악가 형식을 기반으로 파생 클래스 피아니스트를 정의하면 피아니스트 형식은 기반 형식에 정의한 멤버를 상속받습니다. 따라서 피아니스트 개체의 “연주하다.” 메서드를 호출할 수 있다는 것입니다.

[소스 5.1] Musician을 기반으로 파생 클래스 Pianist를 정의하여 상속을 활용한 예

public class Musician {
    public void play(){
        System.out.println("연주하다.");
    }
}
public class Pianist extends Musician{
    public void tuning(){
        System.out.println("조율하다.");
    }
}
public class Program {
    public static void main(String[] args){
        Pianist pianist = new Pianist();
        pianist.play();
        pianist.tuning();
    }
}

실행 결과

연주하다.
조율하다.