인프런 커뮤니티 질문&답변

justcoin님의 프로필 이미지
justcoin

작성한 질문수

김영한의 실전 자바 - 기본편

다형성 - 역할과 구현 예제1

다형성 - 역활과 구현예제1 질문

해결된 질문

작성

·

108

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

  1. 코드를

package poly.car0;

public class Driver {
    //private K3Car k3Car;
    K3Car k3Car = new K3Car();

//    public void setK3Car(K3Car k3Car) {
//        this.k3Car = k3Car;
//    }

    public void drive() {
        System.out.println("자동차를 운전합니다.");
        k3Car.startEngine();
        k3Car.pressAccelerator();
        k3Car.offEngine();
    }

    }

이렇게 작성해도 정상 작동 되는데 왜

아래처럼 코딩한 거에요? 이유를 알려 주세요.

package poly.car0;

public class Driver {
    private K3Car k3Car;
    //K3Car k3Car = new K3Car();

    public void setK3Car(K3Car k3Car) {
        this.k3Car = k3Car;
    }

    public void drive() {
        System.out.println("자동차를 운전합니다.");
        k3Car.startEngine();
        k3Car.pressAccelerator();
        k3Car.offEngine();
    }

    }

 

답변 1

0

저의 생각에는 다형성이 어떤지 를 보여주기 위해서 이런 코드로 작성 하신것 같습니다.

나중에 나오지만 setK3car를 setCar로 바꿔서 Car에서 상속된 자식들이 여러개 들어갈 수 있습니다.

justcoin님의 방식으로 계속 작성 하다보면, new 전기차, new 하이브리드차, new 새로운차, 즉 new 계속 할때 마다 코드의 길이가 늘어나게 되고, drive()의 내용들도 늘어나게 됩니다.

그래서 영한님이 이런 코드로 하셨을 것이라고 생각이 되네요.

justcoin님의 프로필 이미지
justcoin
질문자

처음에는 마음이 급해서 뭐지 했다가 나중에는 아 이래서 이런거구나 알게 되었어요. 확장성 때문에..

저도 공부가 안되고, 마음이 급하면, 될것도 안되더라고요. 영한님 말씀중에 “거북이 마음”이라는 말이 있습니다. 그걸 같이 기억하죠.

justcoin님의 프로필 이미지
justcoin

작성한 질문수

질문하기