오버로딩(Overloading)과 오버라이딩(Overriding)은 객체 지향 프로그래밍에서 중요한 개념
1. 오버로딩 (Overloading)
오버로딩은 같은 이름의 메서드를 매개변수의 개수나 타입이 다르게 정의하는 것
=> 즉, 같은 이름의 메서드를 여러 개 만들 수 있다.
이렇게 메서드를 오버로딩하면 같은 기능을 하는 메서드들을 하나의 이름으로 통일할 수 있다.
[ 오버로딩 으로 구현한 코드 ]
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
public double add(double a, double b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
System.out.println(calculator.add(1, 2));
System.out.println(calculator.add(1, 2, 3));
System.out.println(calculator.add(1.0, 2.0));
}
}
=> 매개변수 타입, 개수에 따라서 실행되는 함수가 다름 (overloading)
2. 오버라이딩 (Overriding)
오버라이딩은 상위 클래스가 가지고 있는 메서드를 하위 클래스에서 다시 정의하는 것
=> 즉, 상위 클래스의 메서드를 덮어쓰는 것
오버라이딩을 통해 하위 클래스에서는 상위 클래스의 메서드를 수정하거나 보완할 수 있다.
이렇게 하위 클래스에서 오버라이딩한 메서드는 상위 클래스의 메서드보다 우선순위가 높아지므로, 하위 클래스의 인스턴스에서 해당 메서드를 호출하면 하위 클래스에서 정의한 메서드가 호출된다.
[ 오버라이딩을 구현한 예시 코드 ]
public class Animal {
public void makeSound() {
System.out.println("동물이 소리를 냅니다.");
}
}
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("멍멍");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("야옹");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Animal();
Animal animal2 = new Dog();
Animal animal3 = new Cat();
animal1.makeSound(); // 동물이 소리를 냅니다 가 호출
animal2.makeSound(); // 멍멍 호출
animal3.makeSound(); // 야옹 호출
}
}
'✍ 따뜻한 개발 공부' 카테고리의 다른 글
CORS 에러! 복습하기 (0) | 2023.05.08 |
---|---|
Node.js로 웹서버 간단 구축해보기 (코딩애플 영상보다 삘받아서 mysql, node.js, express 사용해보깅) (1) | 2023.05.06 |
바이트 단위 (0) | 2023.05.04 |
피보나치 수열 - DP 적용 (1) | 2023.05.03 |
정렬 알고리즘 - 버블/선택/삽입/병합 (0) | 2023.05.01 |
댓글