JAVA에서는 객체지향 프로그래밍의 특징 중 하나인 다형성(Polymorphism)을 구현하기 위해 메소드 오버라이딩, 메소드 오버로딩 2가지 방식을 사용한다.
두 단어가 비슷하고 부모 클래스로부터 상속 받은 메소드를 사용한다는 점이 같아 헷갈려하는 사람이 많다.
두 방식의 개념을 1줄로 요약하자면..
메소드 오버로딩 - 새로운 메소드를 정의하는 것
메소드 오버라이딩 - 기존에 있던 메소드 재정의하는 것
메소드 오버로딩(Method Overloading)
- 모든 접근 제어자(public, private, protected ···)를 사용할 수 있다.
- 메소드명을 변경할 수 없다.
- 리턴 타입이 달라도 된다.
- 매개변수(파라미터)가 달라야 한다.
- 같은 클래스 내에서만 적용할 수 있다.
JAVA
class Calculator {
int add(int num1, int num2) {
return num1 + num2;
}
double add(double num1, double num2) {
return num1 + num2;
}
}
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
int result1 = calculator.add(5, 10);
double result2 = calculator.add(3.5, 2.5);
System.out.println("결과 1 : " + result1);
System.out.println("결과 2 : " + result2);
}
}
메소드 오버라이딩(Method Overriding)
- 부모 클래스에서의 접근 제어자보다 더 넓어질 수 있다.
- 메소드명을 변경할 수 없다.
- 리턴 타입이 같아야 한다.
- 매개변수(파라미터)가 같아야 한다.
JAVA
class Animal {
void makeSound() {
System.out.println("동물이 소리를 낸다.");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("개는 멍멍");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.makeSound(); // "개는 멍멍" 출력
}
}
'Software Development > Java' 카테고리의 다른 글
[Java] Java 21의 새로운 기능 톺아보기 (0) | 2024.04.17 |
---|---|
[Java] 객체지향 생활 체조 원칙 - 2 (0) | 2023.10.19 |
[Java] 객체지향 생활 체조 원칙 - 1 (2) | 2023.10.18 |
[JAVA] Annotation (0) | 2023.10.03 |
[JAVA] 객체지향과 자바 (0) | 2023.09.12 |