
부모 클래스의 메소드가 자식 클래스에서 사용하기에 부적합할 경우 상속받은 조상의 메서드를 자식 클래스에 맞게 변경하는 것(덮어쓰는 것) (change, modify)
부모클래스에게 상속받은 메서드를 재정의하여 사용(덮어쓰기 개념)
부모클래스의 메서드와 시그너처 및 리턴 타입 동일
부모클래스의 메서드보다 접근지정자는 같거나 넓어야 함
상속 받아야만 사용 가능.
*시그너처: 메서드명과 매개변수 타입과 개수
class A {
void print() {
System.out.println("A 클래스");
}
}
class B extends A {
void print() {
System.out.println("B 클래스");
}
}
자식 클래스 내부에서 재정의된 부모 클래스 메소드를 호출해야 하는 경우
명시적으로 super 키워드 붙여 부모 메소드 호출
super.부모메소드();
instance 필드 - 오버라이딩X
instance 메서드 - 오버라이딩O->메서드 오버라이딩
static 필드 - 오버라이딩X
static 메서드 - 오버라이딩X
한 클래스 내에 같은 이름의 메소드를 여러 번 선언(new)
1. 전달값의 타입이 다르거나
2. 전달값의 갯수가 다를 때
매개값을 다양하게 받아 처리할 수 있도록 하기 위함.
여러개 쓸 수 있음.
상속과는 무관하다.
*메소드 시그너처(method signature): 메소드명, 입력매개변수의 자료형. 메소드를 구분하는 기준 역할.
리턴 타입 메서드명 (자료형 변수명, 자료형 변수명, ...) {
}
// 메서드명, 자료형, 자료형 -> 메소드 시그너처
int sum (int a, int b) {
return 3;
} // sum, int, int -> 메소드 시그너처