[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라는 객체로 예제를 보자.
[참고]