Java

오버라이딩(Overriding) vs. 오버로딩(Overloading)

땅다람쥐 2022. 1. 13. 14:16

오버라이딩 vs. 오버로딩

이름이 비슷해서 자주 헷갈리는 경우가 많아서 이 포스트로 개념을 정리하고자 합니다.

오버라이딩 (Overriding)

객체 지향 언어에서 오버라이딩은 상속과 관련이 되어있습니다. Child 클래스들은 Parent class에서 정의된 method들을 사용 할 수 있는데 이런 것들은 inherited method라고 불립니다. 혹은 child 클래스가 parent class의 method와 똑같은 이름, parameter, return type을 가지고 있으면 overriding method 라고 불립니다. Overriding의 이런 특성은 다형성 (polymorphism)에 속합니다.

 

정리하자면

  • Parent class에 선언된 method의 이름, parameter, return type과 같은 method를 child class에서도 선언 하는 것을 오버라이딩 (overriding)이라 합니다.
// Parent class
public class Parent {
	public void show () {
		System.out.println("This is Overriding");
	}
}

//Child class containing overriding class
public class Child extends Parent {
	@Override
	public void show() {
		System.out.println("This is Child show");
	}
}

//Main
public class Main {
	public static void main(String[] args) {
		Parent obj1 = new Parent();
		obj1.show();
		
		Parent obj2 = new Child();
		obj2.show();
	}

}

 

이것에 대한 결과 값으로는 아래와 같이 나온다.

 

This is Overriding
This is Child show

 

오버로딩(Overloading)

오버로딩은 다른 종류의 method들이 똑같은 이름을 가질 수 있게 해준다. 하지만 이름만 같을 뿐 차이점이 필요한데 차이점은 parameter의 수, 데이터 타입 등으로 만들어 질 수 있다.

 

public class Sum  {
	public int sum (int x, int y) {
		return x + y;
	}
	
	public int sum (int x, int y, int z) {
		return x + y + z;
	}
	
	public double sum (double x, double y) {
		return x + y;
	}
}

public class Main {
	public static void main(String[] args) {
		Sum obj = new Sum();
		System.out.println(obj.sum(10.0, 20.0));
		System.out.println(obj.sum(10, 20));
		System.out.println(obj.sum(10, 20, 30));
	}
}

결과 값:

30.0
30
60

 

 

'Java' 카테고리의 다른 글

[Data Structure] List.of()  (0) 2023.09.10
[Stream API] map과 flatMap  (0) 2023.08.21
객체(Object)란 무엇일까요?  (0) 2020.04.25