본문 바로가기

Java

매개변수의 다형성

자동타입변환은 필드에서보다 메소드에서 많이 사용된다고한다. 

메소드의 매개값은 타입과 같은 값을 넣는다고 알고있지만 여기에 클래스타입으로 매개변수를 받고 자동타입변환을 이용해 여러가지 자식타입객체를 집어넣을 수 있다.

코드로 예를 들어보자 

class Driver {

void drive(Vehicle vehicle){

vehicle.run();

}

}

Driver 라는 클래스가 있고 메소드에서는 매개변수로 Vehicle 클래스타입의 매개변수를 받는다.

이 메소드는 Vehicle 클래스의 Run메소드를 실행시킨다. 

메인 메소드에서 Drive메소드를 호출하고자하면 

main{

Driver driver = new driver();

Vehicle vehicle = new Vehicle();

driver.drive(vehicle); 

}

이러한 코드가 된다. 

탈것이라는 뜻의 Vehicle 의 자식클래스로 Bus와 Texi라는 두가지의 클래스가 존재한다. 

만약 driver.drive(vehicle); 의 매개값 vehicle에 Bus를 대입한다면??

일단 코드로 보자

Bus bus = new Bus();

driver.drive(bus);

이렇게 되었을때 매개변수로 들어간 bus는어디로 가느냐?

 void drive(Vehicle vehicle<<=bus){

vehicle.run();

}

}

이렇게 된다  Vehicle vehicle=bus 이렇게되어 자동 타입 변환이 이루어진다. 

우리가 매개변수로 클래스타입을 사용한다면 그 타입에 해당하는 클래스의 객체 뿐만아니라 그 클래스를 상속받는 자식클래스도 매개변수로 사용할수있게된다.

이때 자식객체안에는 보통 부모 메소드의 오버라이딩된 메소드가 있을것이니 넣는 매개변수에 의해 여러가지 값이출력될수있다. 



'Java' 카테고리의 다른 글

추상클래스(abstract)  (0) 2018.12.23
강제타입변환 Casting 및 몇가지  (0) 2018.12.22
배열로 객체관리하기  (0) 2018.12.21
자동타입변환2 필드의 당형성  (0) 2018.12.21
자동타입변환(Promotion)  (0) 2018.12.20