차이점
Override와 Overload는 이름이 비슷하지만 다륵 특성을 가지고 있습니다. 특히, Overload의 경우에는 매개변수와 타입이 달라도 됩니다.
Override | Overload | |
메소드 이름 | 동일 | 동일 |
매개변수, 타입 | 동일 | 다름 |
반환형 | 동일 | 상관없음 |
Overide는 메소드 이름, 매개변수, 타입, 반환형이 같기 때문에, 내부 구현만 바뀐다고 생각하면 됩니다.
Overload는 메소드이름과 반환형은 동일하지만, 매개변수와 타입의 구성 및 갯수가 다를 수 있습니다.
위 사진을 보면,
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 |