Programing Language/Java

[Java] 클래스 상속(Inheritance)

vinedpillar 2022. 6. 27. 23:14

상속성(Inheritance)

  • 상속이란 상위 클래스의 성질과 기능, 즉 멤버를 하위 클래스에게 내려주는 것을 뜻합니다.

  • 기존에 만들어진 클래스와 비슷한 특성이나 성질을 가진 클래스를 만들어야 할 때 상속을 이용하여 개발 편의를 높일 수 있습니다.

  • 클래스의 상속을 사용하는 이유는 다음과 같습니다.
    • 하위 클래스에서 상위 클래스의 속성과 메서드를 다시 정의하지 않고도 사용 가능
    • 상속을 통해 상위 클래스의 코드를 재사용하여, 보다 적은 양의 코드로 새로운 클래스를 생성
    • 상속을 통해 객체를 다형적으로 표현 가능

  •  자바에서 클래스 상속을 사용하는 방법은 아래와 같습니다.
    • 9클래스의 선언부 뒤에 extends 예약어를 사용하여 상속을 표현합니다.
      (자식 클래스를 먼저 선언하고 특성을 이어받을 부모 클래스를 선정하는 방식)
    • 자바에서는 하나의 자식클래스가 하나의 부모클래스를 상속하는 단일 상속(single inheritance)만을 허용합니다.
      (하위 클래스가 2개 이상의 상위 클래스에게 상속 받을 때 발생하는 문제점을 방지하기 위함)
상속 기본 문법

public class 자식클래스이름 extends 부모클래스이름 {

    클래스 내용

}

 

상속 사용 예시

// 부모(상위) 클래스
public class Animal {
    // 부모 클래스 멤버
    public double height;
    public double weight;
    public int age;
    
    public void move() {
    	System.out.println("움직이다");
    }
}


// 자식(하위) 클래스
public class Human extends Animal {
    // 자식 클래스의 멤버
    public String name;
    public String job
    public double property;
}


// 실행 클래스
class ExtendsSample {
    // Human 클래스에서 Animal 클래스의 속성을 사용 가능
    Human.weight = 72;
    human.move();
}

 

 

 

 

상속 관계를 사용해야 할 때의 기준

  • 두 클래스의 관계가 "~은 ~이다" 관계일 경우 상속을 활용합니다.
    [IS-A(Is a Relationship)]
    • 한 클래스보다 다른 클래스가 더 구체화되는 관계일 경우 상속 관계를 활용하는 것이 적절합니다.

  • 두 클래스의 관계가 "~은 ~을 포함하고 있다" 관계일 경우 참조를 활용합니다.
    [HAS-A(Has a Relationship)]
    • 한 클래스가 다른 클래스를 소유하는 관계일 경우 포함 관계를 활용해서 표현하면 효과적입니다.
    • 포함(Composite)이란 클래스의 멤버로 다른 클래스 타입의 참조 변수를 선언하는 것을 뜻합니다.

 

 

 

 

클래스 상속이 불가능한 경우

  • 상속하고자 하는 클래스가 불변(final)로 선언되어있다면 상속이 불가능합니다.