오버라이딩과 오버로딩

SeoSangwon·2023년 4월 20일
0

ChatGPT

목록 보기
3/3

오버라이딩(overriding)과 오버로딩(overloading)은 객체 지향 프로그래밍에서 중요한 개념입니다. 이 둘은 비슷한 기능을 하지만 그 의미와 사용 방법이 서로 다릅니다.

오버로딩(overloading)은 같은 이름의 메소드를 여러 개 정의하는 것입니다. 메소드의 이름은 같지만, 파라미터의 개수나 타입이 다르게 정의됩니다. 이렇게 메소드를 오버로딩하면, 같은 이름으로 다양한 상황에서 메소드를 호출할 수 있습니다.

예를 들어, 다음과 같은 메소드가 있다고 가정해보겠습니다.

public void print(int number) {
    System.out.println("The number is: " + number);
}

public void print(String message) {
    System.out.println("The message is: " + message);
}

위의 코드에서 print 메소드가 두 번 정의되어 있습니다. 첫 번째 메소드는 정수형 인자를 받고, 두 번째 메소드는 문자열 인자를 받습니다. 이렇게 하면, 호출할 때 인자의 타입에 따라 다른 메소드가 호출됩니다.

오버라이딩(overriding)은 상속 관계에서 부모 클래스가 가지고 있는 메소드를 자식 클래스에서 재정의하는 것입니다. 자식 클래스에서 부모 클래스의 메소드를 덮어씌워서 새로운 구현을 제공합니다. 이 때, 메소드의 시그니처(메소드 이름, 파라미터 타입, 리턴 타입)는 부모 클래스의 메소드와 동일해야 합니다.

예를 들어, 다음과 같은 코드가 있다고 가정해보겠습니다.

class Animal {
    public void makeSound() {
        System.out.println("Animal is making a sound");
    }
}

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

위의 코드에서 Animal 클래스에는 makeSound 메소드가 있습니다. 이 메소드는 모든 동물이 공통적으로 가지고 있는 기능을 구현하고 있습니다. 그리고 Cat 클래스는 Animal 클래스를 상속받고 있습니다. Cat 클래스에서는 makeSound 메소드를 오버라이딩해서 고양이가 울 때 나는 소리를 출력하도록 구현하고 있습니다.

이렇게 오버라이딩을 하면, Cat 객체에서 makeSound 메소드를 호출하면, 자식 클래스인 Cat에서 재정의한 메소드가 호출됩니다. 이러한 오버라이딩은 다형성(polymorphism)을 구현하는 데 중요한 역할을 합니다.

오버리딩과 오버라이딩의 차이점을 JAVA를 막 배운사람도 이해할 수 있게 설명해줘 - CHATGPT
https://www.phind.com/search?cache=fd8ac21d-ede6-4eb7-8808-17b560d69f57&init=true - Phind

0개의 댓글