[Java] Overriding & Overloading

2023. 3. 15. 22:43공부/기본지식

오버라이딩(Overriding)과 오버로딩(Overloading)은 객체지향 프로그래밍에서 중요한 개념 중 하나입니다. 둘 다 메서드의 다형성(polymorphism)을 구현하는 방법 중 하나이지만, 각각의 의미와 사용 방법은 다릅니다.

 

오버라이딩(Overriding)

오버 라이딩(Overriding)은 부모 클래스에 정의된 매서드를 자식 클래스에서 새로운 구현을 통해 재정의하는 것입니다. 이때, 자식 클래스에서 재정의된 매서드는 부모 클래스에서 정의된 메서드와 같은 이름, 매개변수 리스트, 반환 타입을 가져야 합니다. 오버라이딩을 사용하면 다형성을 구현하면서 코드를 간결하게 유지할 수 있습니다.

class Animal {
    public void makeSound() {
        System.out.println("The animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Woof!");
    }
}

오버로딩(Overloading)

오버로딩(Overloading)은 같은 이름의 메서드를 여러 개 정의하는 것입니다. 오버로딩을 사용하면 매개변수의 개수나 타입이 다른 경우에도 같은 이름의 메서드를 사용할 수 있습니다. 오버로딩을 사용하면 다형성을 구현하면서 메서드의 이름을 일관성 있게 유지할 수 있습니다.

 

class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    public double add(double a, double b) {
        return a + b;
    }
    
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

 

 

요약하자면, 오버라이딩은 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것이고, 오버로딩은 같은 이름의 메서드를 여러 개 정의하는 것입니다.

'공부 > 기본지식' 카테고리의 다른 글

Singleton Pattern  (0) 2023.03.16
[Java] Garbage Collection  (0) 2023.03.15
[Java] Primitive type & Reference type  (0) 2023.03.15
[Java] Shallow Copy & Deep Copy  (0) 2023.03.15
Singleton Design Pattern 싱글톤 패턴  (0) 2023.01.19