Java

오버로딩(Overloading)과 오버라이딩(Overriding)

KJihun 2023. 6. 9. 19:02
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