오버로딩과 오버라이딩

다람·2023년 2월 23일
0

JAVA

목록 보기
12/27
post-thumbnail

메서드 시그니처

  • 메서드의 선언부에 명시되는 매개변수의 리스트를 가리킨다.
  • 만약 두 메서드가 매개변의 개수와 타입, 그 순서까지 모두 같다면 이 두 메서드의 시그니처는 같다고 할 수 있다.

오버로딩 (overloading)

  • 같은 이름의 메서드를 중복하여 정의하는 것
  • 오버로딩 사용 시 매개변수의 타입이나 개수에 대해 크게 신경 쓰지 않고 호출할 수 있다.
  • 객체 지향 프로그래밍의 특징 중 하나인 다형성을 구현하는 방법 중 하나

메서드 오버로딩의 조건

  1. 메서드의 이름이 같아야 한다.
  2. 메서드의 시그니처 즉 매개변수의 개수 또는 타입이 달라야 한다.
void a(int num1){
	...
}

void a(int num1, int num2){
	...
}

void a(int num1, int num2, int num3){
	...
}

오버라이딩 (overriding)

  • 상속 받은 부모 클래스의 메서드를 재정의하여 사용하는 것

오버라이딩의 조건

  1. 메서드의 선언부는 기본 메서드와 완전히 같아야 한다.
  2. 부모 클래스의 메서드보다 접근 제어자를 더 좁은 범위로 변경할 수 없다.
  3. 부모 클래스의 메서드보다 더 큰 범위의 예외를 선언할 수 없다.
class Parent {
    void display() { System.out.println("부모 클래스의 display() 메소드입니다."); }
}

class Child extends Parent {
    void display() { System.out.println("자식 클래스의 display() 메소드입니다."); }

}

public class Inheritance05 {

    public static void main(String[] args) {
        Parent pa = new Parent();
        pa.display();
        Child ch = new Child();
        ch.display();
        Parent pc = new Child();
        pc.display(); // Child cp = new Parent();
    }
}

// 결과
부모 클래스의 display() 메소드입니다.
자식 클래스의 display() 메소드입니다.
자식 클래스의 display() 메소드입니다.
profile
안녕

0개의 댓글