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

+ Recent posts