본문 바로가기

개발/Java

[Java] 메서드 오버로딩 VS 오버라이딩

오버로딩과 오버라이딩이 한글자 차이라 헷갈릴 수 있어서 따로 정리해보았다.

 

메서드 오버로딩

오버로딩은 함수가 하나의 기능만을 구현하는 것이 아니라 하나의 메서드 이름으로 여러 기능을 구현하도록 하는 Java의 기능이다.

 

즉, 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도, 매개변수의 개수 또는 타입, 순서가 다르면 동일한 이름을 사용해서 메서드를 정의할 수 있다.

 

 

오버로딩 조건

오버로딩은 매개변수의 차이로만 구현할 수 있다. 메서드의 이름이 같고, 매개변수의 개수, 타입, 순서가 달라야 한다.

 

 

오버로딩 주의할 점 
//1번
void speed(String a String b double c) {
}
//2번
void speed(String b String a double c){
}

 

위의 두 함수는 오버로딩 규칙에 위배되어 오류가 발생한다. 매개변수 이름 순서가 달라서 다르다고 생각할 수 있겠지만, String String double로 매개변수 타입 순서가 같다. 다른게 아니다.

 

 

오버로딩 장점

메서드 이름 하나로 상황에 따른 동작을 개별로 정의 할 수 있다.

 

 

 

 

 

 

오버라이딩 (메서드 오버로딩이랑 다름 !)

부모 클래스로부터 상속받은 메서드의 내용을 재정의 하는 것을 말한다. 즉, 자식 클래스의 상황에 맞게 바꿔서 사용하는 것.

 

//부모 클래스
    public void horn() {
        System.out.println(" 빵 !")
    }
 //자식 클래스
 @Override
    public void horn() {
        booster();
    }