반응형
Overloading (오버로딩):
- 오버로딩은 같은 메서드 이름을 가지고 매개변수의 형식 또는 개수를 다르게 정의하는 것을 의미한다.
- 같은 클래스 내에서 여러 메서드가 동일한 이름을 가질 수 있으며, 메서드 호출 시 전달되는 매개변수의 형식 또는 개수에 따라 호출될 메서드가 결정된다.
- 반환 유형은 오버로딩에 영향을 미치지 않습니다.
- 오버로딩은 다형성(polymorphism)을 향상시키고 코드의 가독성을 개선하며, 같은 이름의 메서드를 다양한 상황에 맞게 사용할 수 있게 한다.
public class Calculator {
// 메서드 add(int a, int b)는 두 정수를 받아 정수 합을 반환
public int add(int a, int b) {
return a + b;
}
// 메서드 add(double a, double b)는 두 실수를 받아 실수 합을 반환
public double add(double a, double b) {
return a + b;
}
}
/* 만약 public double add(double a, double b)의 매개 변수값이 int일 경우 아무리
return 타입이 double이어도 컴파일 에러가 뜨게 된다. */
Overriding (오버라이딩):
- 오버라이딩은 하위 클래스가 상위 클래스의 메서드를 동일한 시그니처(메서드 이름, 매개변수 목록, 반환 유형)으로 재정의하는 것을 말한다.
- 오버라이딩은 상속 관계에서 발생하며, 하위 클래스에서 상위 클래스의 메서드를 재정의하여 동작을 변경할 수 있다는 특징이 있다.
- 오버라이딩된 메서드는 하위 클래스의 인스턴스에서 호출될 때, 상위 클래스의 동일한 이름의 메서드를 대체한다.
- 오버라이딩은 다형성(polymorphism)과 상속(inheritance)의 핵심 요소로, 상위 클래스의 메서드를 하위 클래스에서 커스터마이징할 수 있습니다.
class Shape {
// 상위 클래스인 Shape의 draw 메서드를 정의
void draw() {
System.out.println("Drawing a shape");
}
}
class Circle extends Shape {
// 하위 클래스인 Circle에서 상위 클래스의 draw 메서드를 오버라이딩(재정의)
@Override
void draw() {
System.out.println("Drawing a circle"); // 상위 클래스의 메서드를 커스터마이징
}
}
반응형
'코딩 > JAVA' 카테고리의 다른 글
[JAVA] 객체, 클래스 및 인스턴스의 개념과 차이점 (0) | 2023.10.18 |
---|---|
[JAVA]클래스 다이어그램에서 클래스 멤버 또는 속성의 접근 제한자 표기법 (0) | 2023.10.18 |
Java Constructor(생성자)의 개념, 특징, 및 사용 방법 (0) | 2023.10.18 |
"Java에서 '=='와 'equals' 메소드 비교의 차이" (0) | 2023.10.18 |
[JAVA] 비정적(non-static) 멤버 변수와 정적(static) 멤버 변수의 차이와 RAM(메모리) 배치 (0) | 2023.10.17 |