◆ 오버로딩(Overloading)
- 한 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것을 의미합니다.
- 동일한 기능을 하는 메서드들에게 같은 이름을 부여함으로써 코드의 일관성을 제공합니다.
- 매개변수의 유형과 개수를 달리하여 같은 이름의 메서드가 다양한 상황에서 사용될 수 있게 함으로써 가독성을 향상시킵니다.
- 메서드의 이름은 같아야 합니다.
- 매개변수의 타입이나 개수가 달라야 합니다.
- 반환 타입과 접근 제어자는 메서드를 오버로딩하는데 영향을 주지 않습니다.
public class OverloadingExample {
void display(int a) {
System.out.println("int a : " + a);
}
void display(int a, int b) {
System.out.println("int a : " + a + ", int b : " + b);
}
void display(double a) {
System.out.println("double a : " + a);
}
}
◆ 오버라이딩(Overriding)
- 자식 클래스가 부모 클래스로부터 상속받은 메서드를 재정의하는 것을 말합니다.
⊙ 자식 클래스가 부모 클래스의 메서드를 상속받아서 다른 기능을 사용하고자 할 경우에 사용합니다.
- 부모 클래스의 메서드는 숨겨지게 되고 새로 정의한 자식 클래스의 메서드가 호출됩니다.
- 메서드의 이름이 같아야 합니다.
- 메서드의 파라미터가 같아야 합니다.
- 메서드의 리턴 타입이 같아야 합니다.
- 부모 클래스의 메서드보다 자식 클래스의 메서드 접근제한이 동일 하거나 넓어야 한다.
class Animal {
void sound(){
System.out.println("Animal의 소리");
}
}
class Dog extends Animal {
@Override
void sound(){
System.out.println("Dog의 소리");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal();
Animal myDog = new Dog();
myAnimal.sound();
myDog.sound();
}
}