코드로 보자
class People {
public void run() {System.out.println("사람임");}
}
class Batmans extends People {
public void run() {System.out.println("배트맨임");}
}
class ironman extends People {
public void run() {System.out.println("아이언맨임");}
}
우선 People를 선언하고 그 하위로 Batmans와 ironman을 박았따. 배트맨에 s는 왜 넣었는지 모르겠다.
public static void func(People people){
people.run();
}
public static void main(String[] args){
Batmans bat = new Batmans();
ironman iron = new ironman();
func(bat);
func(iron);
}
func는 매개변수로 People 객체를 받는다.
이후 main에서 Batmans와 ironman 객체를 생성해서 매개변수로 넣으면
실행이 된다.
결과값
배트맨임 아이언맨임
batmans와 iroman은 People을 상위로 상속 받는 객체이므로 People의 하위 클래스는 다 매개변수로 넣을 수 있다는거임;;
이게 System.out.print(Object x) 에도 마찬가지로 적용된다.
Object는 모든 클래스의 가장 상위클래스이므로 그 하위클래스인 int, char, String등을 넣어도 다 잘 받아 먹음!