작성
·
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
감사합니다.
감사합니다