상속

서지우·2023년 7월 11일
0

JAVA

목록 보기
14/28

상속이란?

- 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것 
- 두 클래스를 조상과 자손으로 관계를 맺어주는 것
- 자손은 조상의 모든 멤버를 상속받음 (생성자, 초기화블럭 제외)
- 자손의 멤버개수는 조상보다 적을 수 없음 (같거나 많다)


상속관계

- 공통부분은 조상에서 관리하고 개별부분은 자손에서 관리함
- 조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않음


포함관계

포함이란?

- 한 클래스의 멤버변수로 다른 클래스를 선언하는 것
- 작은 단위의 클래스를 먼저 만들고, 이들을 조합해서 하나의 커다란 클래스를 만듦.


상속 VS 포함

- 가능한 한 많은 관계를 맺어주어 재사용성을 높이고 관리하기 쉽게 한다.


단일상속

- java는 단일상속만을 허용 (C++은 다중상속 허용)
- 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.
class TVCR extends TV, VCR { // 이와 같은 표현은 허용하지 않음
	//...
}


Object클래스

- 조상이 없는 클래스는 자동적으로 object클래스를 상속받게 함
- 상속계층도의 최상위는 object클래스가 위치함
- 모든 클래스는 object클래스에 정의된 11개의 메서드를 상속받음
  (toString(), equals(Object obj), hashCode(),...)
  


실습 - ch07 / S01.java

메이플스토리 캐릭터를 통해 실습해 보았다.
주석으로 설명..

package ch07;

class 초보자{
    String skill1 = "달팽이세마리";
}

class 마법사 extends 초보자{
    String skill2 = "매직클로";
}

// 썬콜 전직 / skill3 / 썬더볼트
class 썬콜 extends 마법사{
    String skill3 = "썬더볼트";
}

// 초보자 -> 로그 -> 시프전직
// 로그 skill2 더블 스탭
// 시프 skill3 새비지 블로우

class 로그 extends 초보자{
    String skill2 = "더블스탭";
}

class 시프 extends 로그{
    String skill3 = "새비지 블로우";
}

public class S01 {
    public static void main(String[] args) {

        마법사 magic1 = new 마법사();

        System.out.println(magic1.skill1);
        System.out.println(magic1.skill2);
        System.out.println(magic1.skill3);
        
    }
}
profile
미래가 기대되는 풀스택개발자 공부 이야기~~

0개의 댓글