오버라이딩(Overriding)
- 부모 클래스의 메서드를 하위 클래스가 재정의 하는 것이다.
- 메서드의 이름은 물론 파라메터의 갯수나 타입도 동일해야 하며, 주로 부모 클래스의 동작을 상속받은 자식 클래스에서 변경하기 위해 사용된다.
class Animal {
public void makeSound() {
System.out.println("동물이 소리를 낸다");
}
}
class Dog extends Animal {
// 부모 클래스의 makeSound 메서드를 오버라이딩
@Override
public void makeSound() {
System.out.println("멍멍");
}
}
class Cat extends Animal {
// 부모 클래스의 makeSound 메서드를 오버라이딩
@Override
public void makeSound() {
System.out.println("야옹");
}
}
오버로딩(Overloading)
- 메서드의 이름은 같고 매개변수(parameter)의 갯수나 타입이 다른 함수를 정의하는 것을 의미한다.
class OverloadingExample {
public int add(int a, int b) {
return a + b;
}
(메서드 이름은 동일, 매개변수 타입이 다름)
public int add(double a, double b) {
return a + b;
}
// 문자열 두 개를 연결하는 메서드 (메서드 이름은 동일, 매개변수의 숫자가 다름)
public String add(int a, int b, int c) {
return a + b;
}
}
구분 |
오버로딩 |
오버라이딩 |
메서드 이름 |
동일 |
동일 |
매개변수, 타입 |
다름 |
동일 |
리턴 타입 |
상관없음 |
동일 |