20230707

Moon-Tree·2023년 7월 7일
0

◆ 오버로딩(Overloading)

  • 한 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것을 의미합니다.
  • 동일한 기능을 하는 메서드들에게 같은 이름을 부여함으로써 코드의 일관성을 제공합니다.
  • 매개변수의 유형과 개수를 달리하여 같은 이름의 메서드가 다양한 상황에서 사용될 수 있게 함으로써 가독성을 향상시킵니다.

  1. 메서드의 이름은 같아야 합니다.
  2. 매개변수의 타입이나 개수가 달라야 합니다.
  3. 반환 타입접근 제어자는 메서드를 오버로딩하는데 영향을 주지 않습니다.
  • 오버로딩(Overloading) 예시
public class OverloadingExample {
    void display(int a) {
        System.out.println("int a : " + a);
    }

    void display(int a, int b) {
        System.out.println("int a : " + a + ", int b : " + b);
    }

    void display(double a) {
        System.out.println("double a : " + a);
    }
}

◆ 오버라이딩(Overriding)

  • 자식 클래스가 부모 클래스로부터 상속받은 메서드를 재정의하는 것을 말합니다.
    자식 클래스가 부모 클래스의 메서드를 상속받아서 다른 기능을 사용하고자 할 경우에 사용합니다.
  • 부모 클래스의 메서드는 숨겨지게 되고 새로 정의한 자식 클래스의 메서드가 호출됩니다.

  1. 메서드의 이름이 같아야 합니다.
  2. 메서드의 파라미터가 같아야 합니다.
  3. 메서드의 리턴 타입이 같아야 합니다.
  4. 부모 클래스의 메서드보다 자식 클래스의 메서드 접근제한이 동일 하거나 넓어야 한다.
  • 오버라이딩(Overriding) 예시
class Animal {
    void sound(){
        System.out.println("Animal의 소리");
    }
}

class Dog extends Animal {
    // Overriding method
    @Override
    void sound(){
        System.out.println("Dog의 소리");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();  // Animal 객체 생성
        Animal myDog = new Dog();  // Dog 객체 생성, 여기서 'Dog'는 'Animal'을 상속받은 클래스입니다.
        myAnimal.sound();  // Animal의 소리 출력
        myDog.sound();  // Dog의 소리 출력
    }
}
profile
Backend Developer

0개의 댓글