JAVA

오버라이딩 과 오버로딩

몽게구름 2025. 4. 26. 12:13

 

 

오버라이딩 예시

class Animal {
    void sound() {
        System.out.println("Animal sound");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Bark");
    }
}

class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("Meow");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Dog();   // Animal 타입이지만 실제는 Dog
        myAnimal.sound();              // 출력: Bark

        myAnimal = new Cat();          // Animal 타입이지만 실제는 Cat
        myAnimal.sound();              // 출력: Meow
    }
}

 

 

 

  • sound() 메서드는 Animal에 정의되어 있지만,
  • 실제로는 DogCat에 있는 sound()가 호출

오버로딩 예시

 

class Printer {
    void print(String str) {
        System.out.println("String: " + str);
    }

    void print(int num) {
        System.out.println("Integer: " + num);
    }

    void print(double d) {
        System.out.println("Double: " + d);
    }
}

public class Main {
    public static void main(String[] args) {
        Printer printer = new Printer();
        printer.print("Hello");  // String 버전 호출
        printer.print(100);      // int 버전 호출
        printer.print(3.14);     // double 버전 호출
    }
}

 

 

  • rint() 메서드는 3개가 있지만,
  • 호출될 메서드는 컴파일러가 매개변수 타입을 보고 결정