inblog logo
|
RottenYogurt's Development Blog

    오버로딩 & 오버라이딩

    썩은요플렛's avatar
    썩은요플렛
    Aug 05, 2024
    오버로딩 & 오버라이딩
    Contents
    오버로딩(Overloading)오버라이딩(Overriding)요약 비교
     
    💡
    오버로딩(Overloading)과 오버라이딩(Overriding)
     
    이 둘은 다형성을 높여주는 개념이며, 비슷한 이름을 가지고 있지만, 전혀 다른 개념이라고 봐도 될만큼 차이가 있다
     
     

    오버로딩(Overloading)

     
    • 오버로딩은 같은 이름의 메서드를 여러 개 정의해, 인자의 수나 타입에 따라 다른 동작을 수행하게 하는 것을 의미.
    • 동일한 이름을 가진 메서드가 여러 개 정의됨.
    • 메서드의 파라미터 수나 타입이 달라야 함.
    • 어떤 메서드가 호출될 지 컴파일 타임에 결정됨.
     
    class Math { // 두 개의 정수를 더하는 메서드 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; } } public class Main { public static void main(String[] args) { Math math = new Math(); // 메서드 오버로딩 호출 예시 System.out.println(math.add(1, 2)); // Output: 3 System.out.println(math.add(1, 2, 3)); // Output: 6 System.out.println(math.add(1.5, 2.5)); // Output: 4.0 } }
     

    오버라이딩(Overriding)

     
    • 오버라이딩은 부모 클래스에 정의된 메서드를 자식클래스에서 재정의하여, 부모 클래스의 메서드를 덮어쓰는 것을 말함. 이는 런타임에 결정되며, 동적 다형성을 구현함.
    • 부모 클래스와 동일한 이름의 메서드를 자식 클래스에서 재정의함.
    • 메서드의 파라미터, 반환타입이 동일해야 한다.
    • 어떤 메서드가 호출이 되는지 런타임에 결정됨.
     
    // 상위 클래스 class Animal { // 상위 클래스의 메서드 public void sound() { System.out.println("Some sound"); } } // 하위 클래스 class Dog extends Animal { // 메서드 오버라이딩 @Override public void sound() { System.out.println("Bark"); } } // 또 다른 하위 클래스 class Cat extends Animal { // 메서드 오버라이딩 @Override public void sound() { System.out.println("Meow"); } } public class Main { public static void main(String[] args) { Animal animal = new Animal(); Animal dog = new Dog(); Animal cat = new Cat(); // 메서드 오버라이딩 호출 예시 animal.sound(); // Output: Some sound dog.sound(); // Output: Bark cat.sound(); // Output: Meow } }
     

    요약 비교

     
    특성
    오버로딩(Overloading)
    오버라이딩(Overriding)
    메서드 이름
    동일
    동일
    파라미터(매개변수)
    다름
    동일
    반환 타입
    다를 수 있음
    동일
    접근 제어자(public,private…)
    상관없음
    동일 혹은 더 넓은 범위
    결정 시점
    컴파일 타임
    런타임
    사용하는 상황
    같은 클래스 내에 여러 버전의 메서드를 제공할 때
    부모 클래스의 메서드를 자식 클래스에서 재정의 할 때
     
    Share article
    Contents
    오버로딩(Overloading)오버라이딩(Overriding)요약 비교

    RottenYogurt's Development Blog

    RSS·Powered by Inblog