public class Car{
public int gas;
}
Car클래스가 있고
public class Suv extends Car{
}
Car클래스를 상속받은 Suv 클래스가 있을 때
fill(suv); 를 호출하면
public void fill(Car car){
}
여기에서 어떻게 사용되는지 원리를 알고싶어
자바에서는 다형성(polymorphism)의 개념을 활용하여 상속 관계에 있는 클래스들을 유연하게 다룰 수 있습니다. 다형성은 부모 클래스 타입의 참조 변수가 자식 클래스의 객체를 참조할 수 있는 성질을 말합니다.
주어진 코드에서 Suv 클래스가 Car 클래스를 상속받고 있습니다. 따라서 Suv 클래스는 Car 클래스의 모든 멤버를 상속받습니다. 이때 다형성을 사용하면 Car 클래스 타입의 참조 변수로 Suv 객체를 참조할 수 있습니다.
따라서 fill 메서드의 매개변수가 Car 클래스 타입인 경우에는 Suv 객체를 전달해도 문제가 없습니다. 이는 다형성에 의한 것입니다.
public class Main {
public static void main(String[] args) {
Suv suv = new Suv();
fill(suv);
}
public static void fill(Car car) {
// 여기에서 car는 Car 클래스 타입이지만 실제로는 Suv 객체를 참조할 수 있음
// car 객체의 gas 필드나 Car 클래스의 다른 멤버에 접근 가능
System.out.println("Filling gas: " + car.gas);
}
}
위 코드에서 fill 메서드는 Car 클래스를 매개변수로 받고 있지만 Suv 객체를 전달하여 호출했습니다. 이때 fill 메서드 내에서 car 변수는 Car 클래스 타입이지만 실제로는 Suv 객체를 참조하고 있습니다. 다형성 덕분에 Suv 객체의 멤버에 접근할 수 있게 되었습니다.
다형성을 이용하면 유연하게 객체를 다룰 수 있으며, 이는 객체 지향 프로그래밍의 중요한 특징 중 하나입니다.