오버라이딩(Overriding), 오버로딩(Overloading)
오버라이딩을 통한 메서드 재정의, 오버로딩을 통한 메서드 중복 정의를 통해 다형성을 제공하고 이 다형성이 개발자가 프로그램을 작성할 때 사용편의성을 준다.
같은 메서드 이름, 같은 인자 목록으로 상위 클래스의 메서드를 재정의
같은 메서드 이름, 다른 인자 목록으로 다수의 메서드를 중복 정의
public class Animal {
public String name;
public void showName() {
System.out.printf("안녕 나는 %s야. 반가워\\n", name);
}
}
public class Penguin extends Animal {
public String habitat;
public void showHabitat() {
System.out.printf("%s는 %s에 살아\\n", name, habitat);
}
// 오버라이딩 - 재정의: 상위 클래스의 메서드와 같은 메서드 이름, 같은 인자 리스트
public void showName() {
System.out.println("어머 내 이름은 알아서 뭐하게요?");
}
// 오버로딩 - 중복정의: 같은 메서드 이름, 다른 인자 리스트
public void showName(String yourName) {
System.out.printf("%s 안녕, 나는 %s라고해\\n", yourName, name);
}
}