오버라이드 (Override)
오버라이드는 자식 클래스가 부모 클래스에서 상속받은 메소드를 재정의하는 것.
- 상속: 오버라이드는 상속을 통해 이루어진다. 자식 클래스가 부모 클래스의 메소드를 재정의한다.
- 동일한 시그니처: 재정의하는 메소드는 부모 클래스의 메소드와 동일한 이름, 매개변수, 반환 타입을 가져야 함.
- 다형성: 오버라이드는 다형성의 한 예. 부모 클래스 타입의 변수가 자식 클래스의 오버라이드된 메소드를 호출할 수 있다.
// 예시 코드
class Parent {
void display() {
System.out.println("Parent display()");
}
}
class Child extends Parent {
@Override
void display() {
System.out.println("Child display()");
}
}
// 여기서 Child 클래스는 Parent 클래스의 display() 메소드를 오버라이드하고 있다.
오버로드 (Overload)
오버로드는 같은 이름의 메소드를 여러 개 정의하지만, 매개변수의 수나 타입을 다르게 하는 것을 말한다.
- 동일한 이름, 다른 매개변수: 오버로드된 메소드는 동일한 이름을 가지지만, 매개변수의 타입, 개수, 순서가 달라야 한다.
- 클래스 내부에서 발생: 오버로드는 동일 클래스 내부에서 발생합니다. 상속과는 관련이 없다.
- 반환 타입: 반환 타입은 오버로드를 결정하는 데 영향을 주지 않는다. 즉, 반환 타입만 다른 두 메소드는 오버로드로 간주되지 않는다.
// 오버로드 예시코드
class Example {
void display(int a) {
System.out.println("Display with int: " + a);
}
void display(int a, String b) {
System.out.println("Display with int and String: " + a + ", " + b);
}
}
// 여기서 display 메소드는 매개변수의 타입과 개수가 다른 두 가지 형태로 오버로드되어 있다.
'개발 공부' 카테고리의 다른 글
AOP, Interceptor, Filter (0) | 2024.01.31 |
---|---|
스프링의 Lifecycle (0) | 2024.01.30 |
Spring Security의 구조 (1) | 2024.01.25 |
JWT 발급 과정 (0) | 2024.01.24 |
클래스와 인스턴스의 차이 (0) | 2024.01.23 |