자바

JAVA 자바 매개 변수의 다형성

알통몬_ 2017. 3. 12. 19:39
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

매개 변수의 다형성

자동 타입 변환은 주로 메서드를 호출할 때 많이 발생합니다.

메서드를 호출할 때에는 매개 변수의 타입과 동일한 매개값을 지정하는 것이 정석이지만, 

매개값을 다양화하기 위해 매개 변수에 자식 타입 객체를 지정할 수도 있습니다. 

매개 변수의 타입이 클래스일 경우 자식 객체까지도 사용할 수 있습니다. 

어떤 자식 객체가 제공되는냐에 따라 메서드의 실행 결과는 다양해질 수 있습니다.

(매개 변수의 다형성) 자식 객체가 부모의 메서드를 오버라이딩(재정의)했다면 

메서드 내부에서 오버라이딩된 메서드를 호출함으로써 메서드의 실행 결과는 다양해집니다. 

예제)

부모 클래스

public class Vehicle {

public void run() {

System.out.println("차량이 달립니다.");

}

}


Vehicle을 사용하는 클래스

public class Driver {

public void drive(Vehicle vehicle) {

vehicle.run();

}

}


자식 클래스1

public class Bus extends Vehicle {

@Override

public void run() {

System.out.println("버스가 달립니다.");

}

}


자식 클래스2

public class Taxi extends Vehicle {

@Override

public void run() {

System.out.println("택시가 달립니다.");

}

}


실행 클래스

public class DriverExample {

public static void main(String[] args) {

Driver driver = new Driver();

Bus bus = new Bus();//Bus클래스와Taxi클래스는 Vehicle 클래스를 상속하                  

  Taxi taxi = new Taxi(); 고 있으므로 Driver 클래스의 drive메서드의 매개 변수 

     driver.drive(bus);로 부모 객체인 vehicle대신 bus나 taxi를 사용할 수                    

    driver.drive(taxi);있습니다.

}

}


위 예제처럼 매개값의 타입 변환과 메서드 오버라이딩을 이용해서 매개 변수의 다형성을 구현할 수 있는 것입니다.


반응형