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

박정수님의 프로필 이미지
박정수

작성한 질문수

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

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

다형성에 관련된 질문입니다

작성

·

114

·

수정됨

0



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

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

package poly.ex3.car0;

public class CarDrive {
    private Driver driver;


    public void setDriver(Driver driver){ //Driver driver =   K3car k3 = new k3Car()
        System.out.println("자동차를 설정합니다 :" +  driver);
        this.driver=driver;
    }

    public void drive(){
        System.out.println("자동차를 운전합니다");
        driver.stop();
        driver.move();
        driver.engine();
    }
}
public class CarMain {
    public static void main(String[] args) {
    CarDrive car=new CarDrive();



    K3Car k3=new K3Car();
    car.setDriver(k3);
    car.drive();

    Driver porches =new Porche();
    car.setDriver(porches);
    car.drive();

main 함수에서 porches는 Driver 타입으로 업케스팅을해서 넘어가고 K3Car는 업케스팅을하지않은상태로 setDriver 함수에 넘어갑니다

그리고 setDriver 함수의 매개변수인 (Driver driver)
에서
첫번쨰인 k3는 업케스팅이 이루어지고 Driver driver=new K3Car();

두번쨰인 porches 는 이미 업케스팅이 이루어진 Driver 타입 객체이기때문에 그냥 넘어가는것으로 이해했는데 이게 맞는건지 햇갈려서 질문드립니다

그리고 이렇게 미리 두번쨰처럼 업케스팅을해서 매개변수로 넘겨주는것이 올바른접근법인지도 궁금합니다

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 박정수님

둘다 올바른 방법입니다 🙂

이 부분에 대한 더 자세한 고민은 다음 질문을 참고해주세요.

https://www.inflearn.com/questions/47449

감사합니다.

박정수님의 프로필 이미지
박정수
질문자

감사합니다

박정수님의 프로필 이미지
박정수

작성한 질문수

질문하기