1. Method Overloading
메서드 오버로딩은 클래스 내에 같은 이름을 가진 메서드를 여러 개 정의하는 것을 허용합니다. 다시 말해, 같은 이름의 메서드를 정의할 때 매개변수의 타입이나 개수가 다를 수 있습니다. 메서드들은 서로 다른 매개변수 목록을 가져야 하며, 반환 타입은 달라도 됩니다. 컴파일러는 메서드 호출 시 전달되는 인수에 기반하여 어떤 메서드를 호출할지 결정합니다.
public class MathOperations {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
2. Method Overriding
메서드 오버라이딩은 서브클래스가 슈퍼클래스에 이미 정의된 메서드를 재정의하는 것을 의미합니다. 서브클래스의 메서드는 슈퍼클래스의 메서드와 동일한 메서드 시그니처(메서드 이름, 매개변수, 반환 타입)를 가져야 합니다. 이로 인해 서브클래스는 슈퍼클래스에서 정의된 동작을 대체하여 자체 동작을 제공할 수 있습니다.
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
}
-부모의 기능을 물려받는다
-그걸 고쳐서 자신의 것으로 바꿔쓴다
-상속관계의 두개의 클래스에서 기능적으로 발생하는 현상