객체 지향에서의 다형성

오버라이딩(Overriding), 오버로딩(Overloading)

오버라이딩을 통한 메서드 재정의, 오버로딩을 통한 메서드 중복 정의를 통해 다형성을 제공하고 이 다형성이 개발자가 프로그램을 작성할 때 사용편의성을 준다.

오버라이딩(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);
	}
}

Java 메모리 : 예시 8 (다형성과 T메모리)