20150916
다형성(polymorphism)-매개변수의 다형성
매개변수 또한 다형적인 특징이 적용 됩니다.
예를 들어서 SuperCar, BusCar, SuvCar 클래스가 있고 운전자 클래스에서 어떤 차를 다리게 할지를 정하는 run 함수가 있는 코드를 보겠습니다.
class SuperCar{
boolean r = false;
}
class BusCar{
boolean r = false;
}
class SuvCar{
boolean r = false;
}
class Runner {
run(SuperCar sc){
sc.r = true;
}
run(BusCar bc){
bc.r = true;
}
}
class testtest {
Runner rner = new Runner();
SuperCar sc;
BusCar bc;
rner.run(sc);
rner.run(bc);
}
Runner 클래스에 있는 run 함수의 매개변수가 SuperCar 클래스 타입이면 SuperCar 타입의 매개 변수만 올 수 있습니다. 그래서 다른 차를 달리게 하고 싶으면 매개변수를 바꿔서 오버로드 해서 차의 종류 만큼 만들어 줘야 하는 불변함이 있습니다.
그런데 모든 차의 공통된 부모 클래스를 상속 받으면 이런 불변함을 해결 할 수 있습니다.
class Car {
boolean r = false;
}
class SuperCar extends Car{
}
class BusCar extends Car{
}
class SuvCar extends Car{
}
class Runner {
run(Car car){
sc.r = true;
}
}
class testtest {
Runner rner = new Runner();
SuperCar sc;
rner.run(sc);
}
이런식으로 공통 부모 클래스 Car를 상속받고 15번 줄에 있는 run의 매개변수를 Car 타입의 참조변수로 지정하면 하나의 run 함수로 모든 car 클래스를 상속받은 자식 클래스의 참조타입을 받을 수 있습니다.
'프로그래밍 > java' 카테고리의 다른 글
| 인터페이스(interface) (0) | 2015.09.16 |
|---|---|
| 추상클래스(abstract class) (0) | 2015.09.16 |
| Java 다형성(polymorphism)-instanceof 연산자 (0) | 2015.09.16 |
| Java 다형성(polymorphism) (0) | 2015.09.16 |
| java 메서드(method) (0) | 2015.09.12 |