용어 정리
다형성은 객체 지향 프로그래밍의 3대 특성 중 하나로, 같은 이름의 메서드나 연산자를 상황에 맞게 다르게 동작하도록 하는 것을 말합니다.
오버로딩과 오버라이딩은 객체지향 프로그래밍 기법입니다. 이름이 비슷해 보이지만 하는 역할을 아예 다릅니다.
오버로딩 : 같은 이름이지만 다른 입력값을 가지도록 구현할 수 있는 기술입니다. 인수의 개수, 인수의 타입, 인수의 순서가 다른 여러 개의 메서드를 구현할 수 있습니다. 반환 타입은 포함 되지 않습니다.
오버라이딩 : 상위 클래스를 상속(추상클래스) 받거나 또는 구현하는(인터페이스) 경우 추상 메서드를 오버라이딩 합니다. 이때 하위 클래스에서 @Override 어노테이션을 사용해서 메서드를 재정의 할 수 있습니다.
package Example;
public abstract class Animal {
String name;
int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public void move() {System.out.println("이동한다");}
public void eat() {System.out.println("먹는다");}
public abstract void bark(); //짖는 소리는 동물마다 다르므로 추상메서드로 생성
}
package Example;
// 추상클래스 Animal을 상속 받은 Dog 클래스
public class Dog extends Animal{
public Dog(String name, int age) {
super(name, age);
}
// 상위 클래스의 추상 메서드를 오버라이딩해서 구현
@Override //메서드 오버라이딩
public void bark() {
System.out.println("멍멍!!");
};
}
참고