본문 바로가기

Java/Java 상속

Overriding vs Overloading

728x90
반응형

하필 또 이름이 비슷해서 헷갈리게 하는 기능이 있단다. 

 

Overriding과 Overloading이 있는데 후자는 상속과 아무런 관련이 없다는데요? 흠..

 

그래도 무슨말인지 보아하니..

java에서는 같은 이름의 method도 기능만 다르면 사용가능하다. 그래서 아래처럼

 

class Cal{
	public int sum(int v1, int v2) {
		return v1+v2;
	}
	
	// 아래 method는 위의 sum과 이름이 같지만 정수 3개를 더해주는 다른 기능을 쓴다
	// 이걸 Overloading이라고 부른다. 
	public int sum(int v1, int v2, int v3) {
		return v1+v2+v3;
	}
}

class Cal3 extends Cal{
	public int minus(int v1, int v2) {
		return v1-v2;
	}
	//부모가 가지고 있는 기능을 다시 써줌 = 덮어쓰기
	//영어로는 Overriding 이라고 한다
	public int sum(int v1, int v2) {
		System.out.println("Cal3!");
		return v1+v2;
	}
}

public class InheritanceApp {

	public static void main(String[] args) {
		Cal c = new Cal();
		System.out.println(c.sum(2, 1));
		
		Cal3 c3 = new Cal3();
		System.out.println(c3.minus(3, 10));
		System.out.println(c3.sum(2, 1));
		}
	
}

sum 이라는 method의 이름은 같지만 그 기능은 다른 두 개의 method가 생겼다. 

그냥 이걸 Overloading 이라고 부른다고 한다.

 

상속과는 별 관련이 없다고 생각하면 편하단다.

 

 

 

728x90
반응형

'Java > Java 상속' 카테고리의 다른 글

상속과 생성자  (0) 2020.12.01
this & super  (0) 2020.12.01
Overriding  (0) 2020.12.01
Java에서 상속  (0) 2020.12.01