같은 이름의 메서드를 여러 개 정의하는 것
class MathUtil {
// 정수 두 개를 더하는 메서드
int add(int a, int b) {
return a + b;
}
// 정수 세 개를 더하는 메서드 (매개변수 개수 다름)
int add(int a, int b, int c) {
return a + b + c;
}
// 실수를 더하는 메서드 (매개변수 타입 다름)
double add(double a, double b) {
return a + b;
}
}
상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것
class Animal {
void sound() {
System.out.println("동물이 소리를 냅니다.");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("멍멍!");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("야옹!");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.sound(); // 멍멍!
myCat.sound(); // 야옹!
}
}
오버로딩은 같은 클래스 내에서 발생하고, 오버라이딩은 상속 관계에서 발생한다.