자바에서 다형성을 지원하는 두가지 방법
같은 이름의 메서드 여러개를 매개변수 유형과 개수의 차이로 구별하는 것으로, 메서드 오버로딩과 생성자 오버로딩으로 나뉜다.
같은 이름의 메서드 또는 생성자를 여러개 정의하고, 매개변수의 자료형과 개수 등을 다르게 하여, 다양한 유형의 호출에 응답할 수 있게된다
class Overloading{
void f() {
//doSomething
}
void f(String str) {
//doSomething
}
void f(int a) {
//doSomething
}
}
단, 반환형(Return type) 을 통한 구분은 불가능하다
상위 클래스가 가지고 있는 메서드를 하위클래스가 재정의 하는 것
상위 클래스의 메서드와 메서드 이름, 매개변수, 반환형이 같을경우 이를 자동으로 오버라이딩으로 인식하여, 상위클래스의 메서드를 재정의한다. (덮어쓴다)
단, 매개변수의 이름은 달라도 상관없다.
class Food {
String eat(int num) {
System.out.printf("음식 %n개를 먹었습니다!\n", num);
}
}
class Juice extends Food {
String eat(int bottle) {
System.out.printf("주스 %d병을 마셧습니다!\n", bottle);
}
}