메서드 시그니처
- 메서드의 선언부에 명시되는 매개변수의 리스트를 가리킨다.
- 만약 두 메서드가 매개변의 개수와 타입, 그 순서까지 모두 같다면 이 두 메서드의 시그니처는 같다고 할 수 있다.
오버로딩 (overloading)
- 같은 이름의 메서드를 중복하여 정의하는 것
- 오버로딩 사용 시 매개변수의 타입이나 개수에 대해 크게 신경 쓰지 않고 호출할 수 있다.
- 객체 지향 프로그래밍의 특징 중 하나인 다형성을 구현하는 방법 중 하나
메서드 오버로딩의 조건
- 메서드의 이름이 같아야 한다.
- 메서드의 시그니처 즉 매개변수의 개수 또는 타입이 달라야 한다.
void a(int num1){
...
}
void a(int num1, int num2){
...
}
void a(int num1, int num2, int num3){
...
}
오버라이딩 (overriding)
- 상속 받은 부모 클래스의 메서드를 재정의하여 사용하는 것
오버라이딩의 조건
- 메서드의 선언부는 기본 메서드와 완전히 같아야 한다.
- 부모 클래스의 메서드보다 접근 제어자를 더 좁은 범위로 변경할 수 없다.
- 부모 클래스의 메서드보다 더 큰 범위의 예외를 선언할 수 없다.
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() 메소드입니다.