본문 바로가기
Tech/Java

Overriding와 Overloading

by Augustine™ 2019. 8. 25.
반응형

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

댓글