자바

JAVA 자바 인터페이스 매개 변수의 다형성

알통몬_ 2017. 3. 13. 10:16
반응형


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

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

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

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

 

매개 변수의 다형성

매개값을 다양화하기 위해서 상속에서는 매개 변수를 부모 타입으로 선언하고 호출할 때에는 자식 객체를 대입했었습니다. 이번엔 매개 변수를 인터페이스 타입으로 선언하고 호출할 때에는 구현 객체를 대입합니다.

ex)

 public class Driver {

      public void drive(Vehicle vehicle) {
         vehicle.run();

      }

}


public interface Vehicle {

      public void run();

    }

 }

위 같은 코드가 있다고 할 때

Bus 클래스가 구현 클래스라하면 아래와 같이 Driver 의 drive() 메서드를 호출할 때 Bus 객체를 생성해서 매개 값으로 줄 수 있습니다.



drive()메서드는 Vehicle 타입을 매개 변수로 선언했지만, Vehicle을 구현한 Bus 객체가 매개 값으로 사용되면 자동 타입 변환이 발생합니다.

매개 변수의 타입이 인터페이스일 경우, 어떠한 구현 객체도 매개값으로 사용할 수 있고, 

어떤 구현 객체가 제공되느냐에 따라 메서드의 실행 결과는 다양해짐 =>매개 변수의 다형성


예제

매개 변수의 인터페이스화

public class Driver {

public void drive(Vehicle vehicle) {

vehicle.run();

}

}


인터페이스

public interface Vehicle {

public void run();

}


구현 클래스

public class Bus implements Vehicle {

@Override

public void run() {

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

}

}


구현 클래스2

public class Taxi implements 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();

Taxi taxi = new Taxi();

driver.drive(bus); //자동 타입 변환

driver.drive(taxi); 

}

}

반응형