[Java] 4. 상속(Inheritance, IS-A)


상속관계(Inheritance, IS-A)에 대한 포스팅이다.

1. 상속(Inheritance, IS-A)

  • 상속받고자 하는 클래스명를 키워드 extends를 사용한다.
  • 기존의 클래스로 새로운 클래스를 작성하는 것.
  • 두 클래스를 부모와 자식 관계롤 나타냄.
  • 자손의 변경은 조상에 영향을 미치치 않는다.
  • 자손 클래스는 조상 클래스의 모든 멤버를 상속 받는다.
  • 단일 상속만 가능


class 자식 extends 부모 {
}
class Parent {
    //
}

class Child extends Parent {
    //...
}


조상 클래스 : 부모(parent)클래스, 상위(super)클래스, 기반(base)클래스 자손 클래스 : 자식(chlid)클래스, 하위(sub)클래스, 파생된(derived)클래스


1-1. 예제코드

아래는 예제 소스이다. Parent(부모) 클래스의 멤버들을 Child(자식) 클래스에서 사용되는 것을 확인 할 수 있다. Child 객체에서 Parent를 상속 받았기 때문에 Parent 객체변수 assetsAmt, debt에 접근이 가능하다.

/**
 * 부모
 */
class Parent {
    int assetsAmt;  //부모자산 금액 (멤버)
    int debt;       //부모 빚 (멤버)

    //부모 전체 재산 계산 (멤버)
    public int getParentTotProperty() {
        return this.assetsAmt + this.debt;
    }
}

/**
 * 자식
 */
class Child extends Parent {
    int saveAmt;    //자식 저축금액

    //부모 재산 상속받음
    public int receiveParentProperty() {
        return saveAmt + getParentTotProperty();
    }
    //부모 재산 상속포기
    public int giveupParentProperty() {
        return saveAmt;
    }
    //부모자산 금액 조회
    public void getParentAssetsAmt() {
        System.out.println("부모자산 금액 : " + assetsAmt);
    }
    //부모자산 금액 조회
    public void getParentDebt() {
        System.out.println("부모 전체 재산 계산 : " + debt);
    }
}

/**
 * 상속(Inheritance) 예제
 * 부모자식 재산 상속 기
 */
public class ExAssetsChildParent {

    public static void main(String... args) {

        //자식 클래스 Child는 부모 클래스 멤버(변수, 메서드)를 상속
        Child c = new Child();
        //부모 데이터 set
        c.assetsAmt = 10000;//부모 자산 금액 (상속 멤버)
        c.debt = -2000;     //부모 빚      (상속 멤버)
        //자식 데이터 set
        c.saveAmt = 1000;   //자식 자산

        int childTotAssets = 0;//본인 총 재산

        //부모 전체 재산이 0보다 크면 재산상속
        int amt = c.getParentTotProperty();
        //상속
        if (amt > 0) {
            childTotAssets = c.receiveParentProperty();
        //상속포기
        } else {
            childTotAssets = c.giveupParentProperty();
        }

        System.out.println("부모 상속재산: " + c.getParentTotProperty());
        System.out.println("자식 저축금액: " + c.saveAmt);
        System.out.println("자식 총 재산: " + childTotAssets);
    }
}

다음 포스팅에서 TV라는 객체로 예제를 보자.



[참고]