본문 바로가기
학습

Override vs Overload

코동이 2020. 7. 17.

차이점


Override와 Overload는 이름이 비슷하지만 다륵 특성을 가지고 있습니다. 특히, Overload의 경우에는 매개변수와 타입이 달라도 됩니다.

 

  Override Overload
메소드 이름 동일 동일
매개변수, 타입 동일 다름
반환형 동일 상관없음

 

Overide는 메소드 이름, 매개변수, 타입, 반환형이 같기 때문에, 내부 구현만 바뀐다고 생각하면 됩니다.

Overload는 메소드이름과 반환형은 동일하지만, 매개변수와 타입의 구성 및 갯수가 다를 수 있습니다.

 

https://www.scientecheasy.com/2020/08/difference-overloading-overriding-java.html/

 

위 사진을 보면,

 

Override는 보통 extends 등 상속을 할 때 메서드를 Override 한다고 표현합니다

Overload는메서드 이름은 같지만, 매개변수가 int와 long으로 서로 다를 수 있습니다.

 

 

Override


public interface Comparable<T> {
    public int compareTo(T o);
}

public class Test implements Comparable<Integer>{
    private int val;

    @Override
    public int compareTo(int val){
    	return this.val-val;
    }  
}

 

Comparable 인터페이스의 compareTo 메소드를 Test 클래스가 Override합니다.

일반적으로 상속관계에 있는 클래스 사이에서 새롭게 정의하여 사용할 때 Override합니다.

 

반환형, 메소드 이름, 매개변수 모든 것이 다 똑같으며 메소드 내의 작동 방식만 새롭게 만듭니다.

 

 

 

Overload


Dog 클래스의 bark()메소드를 Overload 해보겠습니다.

 

class Dog{
	public void bark(){
		System.out.println("wal wal");
	}

	public void bark(String sound){ //String 매개변수 사용
		System.out.println(sound);
	}

	public void bark(int n){ //int 매개변수 사용
		for(int i=0;i<n;i++){
    		System.out.println("wal wal");
	}
    
    public static void main(String[] args){
        Dog dog = new Dog();
        dog.bark();
        dog.bark("wal wal");
        dog.bark(5);
}

 

맨 위의 bark() 메소드는 매개변수가 없지만 두번째와 세번째 메소드는 각각 bark(), bark(String sound), bark(int n)을 매개변수로 가집니다.

 

메소드 이름이 같고 매개변수의 타입이 다르기 떄문에 Overload입니다.

 

 

참고

https://www.scientecheasy.com/2020/08/difference-overloading-overriding-java.html/

반응형

'학습' 카테고리의 다른 글

다형성 / Up-casting & Down-casting  (0) 2020.07.20
Wrapper class / Integer cache pool  (0) 2020.07.17
Java Heap vs Stack (Memory Allocation)  (0) 2020.07.15
equals vs == (string pool)  (0) 2020.07.14
JDK, JRE  (0) 2020.07.14