자동타입변환은 필드에서보다 메소드에서 많이 사용된다고한다.
메소드의 매개값은 타입과 같은 값을 넣는다고 알고있지만 여기에 클래스타입으로 매개변수를 받고 자동타입변환을 이용해 여러가지 자식타입객체를 집어넣을 수 있다.
코드로 예를 들어보자
class Driver {
void drive(Vehicle vehicle){
vehicle.run();
}
}
Driver 라는 클래스가 있고 메소드에서는 매개변수로 Vehicle 클래스타입의 매개변수를 받는다.
이 메소드는 Vehicle 클래스의 Run메소드를 실행시킨다.
메인 메소드에서 Drive메소드를 호출하고자하면
main{
Driver driver = new driver();
Vehicle vehicle = new Vehicle();
driver.drive(vehicle);
}
이러한 코드가 된다.
탈것이라는 뜻의 Vehicle 의 자식클래스로 Bus와 Texi라는 두가지의 클래스가 존재한다.
만약 driver.drive(vehicle); 의 매개값 vehicle에 Bus를 대입한다면??
일단 코드로 보자
Bus bus = new Bus();
driver.drive(bus);
이렇게 되었을때 매개변수로 들어간 bus는어디로 가느냐?
void drive(Vehicle vehicle<<=bus){
vehicle.run();
}
}
이렇게 된다 Vehicle vehicle=bus 이렇게되어 자동 타입 변환이 이루어진다.
우리가 매개변수로 클래스타입을 사용한다면 그 타입에 해당하는 클래스의 객체 뿐만아니라 그 클래스를 상속받는 자식클래스도 매개변수로 사용할수있게된다.
이때 자식객체안에는 보통 부모 메소드의 오버라이딩된 메소드가 있을것이니 넣는 매개변수에 의해 여러가지 값이출력될수있다.
'Java' 카테고리의 다른 글
추상클래스(abstract) (0) | 2018.12.23 |
---|---|
강제타입변환 Casting 및 몇가지 (0) | 2018.12.22 |
배열로 객체관리하기 (0) | 2018.12.21 |
자동타입변환2 필드의 당형성 (0) | 2018.12.21 |
자동타입변환(Promotion) (0) | 2018.12.20 |