[JAVA] Overloading VS Overriding

정만·2023년 2월 5일

JAVA

목록 보기
3/4
post-thumbnail

이번 글에서는 JAVA를 공부하다보면 헷갈릴 수 있는 오버로딩과 오버라이딩의 차이점에 대해 몇 자 적어보려고 한다.

1. Overloading (오버로딩) : 상속과는 별개로 자식 클래스가 가질 수도 있으며 부모클래스도 가질 수 있다. 메서드의 이름은 같고 매개변수의 갯수나 타입이 다른 함수를 정의하는 것을 의미한다.

2. Overriding (오버라이딩) : 부모클래스가 가진 것을 재정의하는 것. 즉, 상위 클래스의 메서드를 하위 클래스가 재정의 하는 것이다.

이해를 돕기 위해 아래의 코드를 살펴보자!

class Cal  {
	public int sum(int v1, int v2) {
		return v1 + v2;
	}
	
	//Overloding : 상속과는 별개, 자식이 가질 수도 있음 .
	public int sum(int v1, int v2, int v3) {
		return this.sum(v1, v2)+ v3; 
	}
	
}
//Cal: 부모 클래스, Cal3: 자식 클래스
class Cal3 extends Cal {
	public int minus(int v1, int v2) {
		return v1 - v2;
	}
	//Override(Overriding): 부모가 가진 것을 재정의
	public int sum(int v1, int v2) {
		System.out.println("Cal3!!");
		return super.sum(v1, v2); 
	}
}

코드는 2개의 클래스가 존재하며 Cal3 클래스가 Cal 클래스를 상속한다.

Overloading된 코드는 Cal3 클래스에도 적용이 가능하지만 Overriding된 코드는 부모 클래스인 Cal 클래스를 Cal3 클래스에서 재정의한 것이 때문에 Cal3 클래스에서만 가능한 것을 알 수 있다.

지금까지 헷갈릴 수 있는 오버로딩과 오버라이딩의 차이점에 대해 살펴보았다.
( 더 노력하자 미니야!! )

profile
멋있는 어른이 되고싶은 정만이의 벨로그

0개의 댓글