반응형
Java에서 흔히 쓰이는 개념. 근데 이 둘의 차이를 모르고 쓰는 개발자가 의외로 많다.
Override는 상위클래스의 메소드를 자식클래스의 메소드에게 그 틀을 물려주는 것이다.
즉, 상위에서 정의해놓은 메소드를 다른 방식으로 또는 조금 변경이 필요할 때 사용한다.
여기서 하위클래스의 메소드는 아래 조건을 따라야 한다.
1. 메소드 명 동일
2. 동일 파라미터 타입에 순서
3. 동일 리턴 타입
그렇다면 Overloading은 어떻게 다를까? Overloading는 동일 클래스내에서 동일 메소드명에, 파라미터를 달리 사용하여 구현이 필요할 때 사용한다.
아래 예제를 통해 살펴보자.
package com.example.coreconcepts;
public class Animal {
public void bark(int vol, int cnt) {
System.out.println("The animal barks " + cnt + " times as "+vol + " sound size!");
}
public void bark(int[] cnts) {
for(int cnt : cnts) {
System.out.println("The animal barks " + cnt);
}
}
}
class Lion extends Animal{
@Override
public void bark(int vol, int cnt) {
System.out.println("The loin barks " + cnt + " time as "+vol + " sound size!");
}
@Override
public void bark(int[] cnts) {
for(int cnt : cnts) {
System.out.println("The animal barks " + cnt);
}
}
}
Animal 클래스에는 두 개의 메소드가 있다. 첫 번째 메소드는 두 개의 int 형 파라미터가 있는 메소드다.
두 번째 메소드는 동일 이름으로 파라미터 타입이 틀리다. 이 때, 메소드는 Overloading 개념이다.
Animal 클래스를 상속한 Lion 클래스를 살펴보자.
Animal 클래스의 메소드를 상속하여 메소드의 내용을 재정의 하였다. 이 떄, 동일 메소드명, 동일 파라미터 타입, 순서, 그리고 동일 리턴 타입을 준수하여, @Override 어노테이션을 표기하여 사용하였다.
반응형
'Tech > Java' 카테고리의 다른 글
Gson을 이용한 json 변환 예제 (0) | 2020.02.20 |
---|---|
Java command line의 Arguments에 대해 알아보기 (2) | 2019.08.13 |
Abstract Factory Design Pattern (0) | 2019.03.20 |
Factory Design Pattern (0) | 2019.03.18 |
Singleton Design Pattern (0) | 2019.03.14 |
댓글