728x90
오늘은 오버로딩과 오버라이딩에 대해 찾아봤다.
처음에는 비슷한 이름이라 헷갈리기도 하고, 비슷한 기능이겠거니 생각했지만 전혀 다른 기능이었다.
오버로딩은 같은 이름을 가진 메서드나 생성자를 여러 개 정의하는 것이다
- 매개변수의 개수, 타입, 순서 등을 서로 다르게 정의하여야 함
- 오버로딩된 메서드들은 같은 이름으로 호출되지만, 매개변수의 정보를 통해 호출될 메서드를 구별함
- 오버로딩을 통해 메서드의 이름을 좀 더 직관적이고 일관성 있게 사용할 수 있음
//오버로딩 예제
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
오버라이딩은 상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하는 것이다.
- 상속 관계에 있는 클래스들 간에 발생하는 개념으로, 상위 클래스의 메서드를 하위 클래스에서 덮어쓰는 것
- 하위 클래스는 상위 클래스의 동작을 변경하거나 확장 가능하다
- 상위 클래스의 메서드와 동일한 시그니처(메서드 이름, 매개변수 타입 및 개수, 반환 타입)를 가져야 함
//오버라이딩 예제
public class Animal {
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 animal = new Animal();
animal.makeSound(); // "동물이 소리를 낸다."
Cat cat = new Cat();
cat.makeSound(); // "야옹야옹"
}
}
오늘은 오버로딩과 오버라이딩에 대해 알아보았다.
차이점을 확실히 이해할 수 있었고, 앞으로 오버로딩과 오버라이딩을 적절히 활용해
유연하고 가독성 있는 코드를 작성할 수 있도록 노력해야겠다.
'Java' 카테고리의 다른 글
스트림(Stream) (0) | 2023.06.21 |
---|---|
모던 자바 알아보기(람다, 스트림, Optional) (0) | 2023.05.30 |
쓰레드의 상태 (0) | 2023.05.30 |
동기화(synchronized) (0) | 2023.05.30 |
쓰레드 제어 메소드 (0) | 2023.05.29 |