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 |