JAVA 25강

주바나·2023년 3월 6일
0

JAVA 기초

목록 보기
6/16
post-thumbnail

상속


상속 안쓴경우 (중복 有)

class 검은고양이 {
    void 숨쉬다() { }
    void 야옹() { }
    void 뛰어넘다() { }
    void 미래를_예지하다() { }
}

class 흰고양이 {
    void 숨쉬다() { }
    void 야옹() { }
    void 뛰어넘다() { }
    void 목숨을_늘린다() { }
}

흰고양이 a = new 흰고양이();
a.숨쉬다();
a.야옹();
a.미래를_예지하다();

검은고양이 b = new 검은고양이();
b.숨쉬다();
b.야옹();
b.목숨을_늘린다();

이 때 고양이를 8마리로 할거고, 8마리에게 숨쉬다, 야옹, 뛰어넘다 이 3개가 다 들어있다면?
같은 기능을 다 복붙하는거 비효율적임.

검은고양이와 흰고양이를 포함하는 더 추상적인 개체를 만들 수 있다.=>고양이

상속 사용한 경우(중복코드 없거나, 적음)

class 고양이 {
    void 숨쉬다() { }
    void 야옹() { }
    void 뛰어넘다() { }
}

class 검은고양이 extends 고양이 { //위 설계도의 내용을 복사 받음(extends)
    void 미래를_예지하다() { }
}

class 흰고양이 extends 고양이 { //흰 고양이 안에 메소드 4개인거임.3개 상속받았으니!
    void 목숨을_늘린다() { }
}

class 점박이고양이 extends 고양이 {
    void 춤춘다() { }
}

흰고양이 a = new 흰고양이();
a.숨쉬다();
a.야옹();
a.미래를_예지하다();

검은고양이 b = new 검은고양이();
b.숨쉬다();
b.야옹();
b.목숨을_늘린다();

점박이고양이 c = new 점박이고양이();
c.숨쉬다();
c.야옹();

다중상속


로봇오리 extends 오리 ,고무오리

이렇게 두개 상속 받는 것 불가능
이유: 오리한테도 void 날다()있고 고무오리한테도 void 날다() 있으면 나중에 로봇오리.날다();하면 뭐 부름?! 애매해질 수 있다.

그럼 두 속성 가질때 어떻게 하는가? -> 구성

구성이 상속보다 좋은 방법임.
상속과 구성을 적절히 섞어서 프로그래밍해야함

profile
BE -JAVA,Spring boot

0개의 댓글