본문 바로가기
Web

[Java] Overloading, Overriding

by DuncanKim 2022. 6. 15.
728x90

[Java] Overloading, Overriding

overlord

오버로딩과 오버라이딩

말은 비슷하지만 다른 것이다.

오버로딩은 매개변수를 다양하게 받아오기 위해서 생성자든 메소드든 '과적'을 하는 것이고,

오버라이딩은 상속과 연관된 개념으로 부모 클래스의 메소드를 덮어쓰고 새로운 메소드로 활용하는 것이다.

 

1. Overloading

public class Over{
	public Over(int a){ ... }
    	public Over(int a, int b){ ... }
	public Over(int a, int b, String c){ ... }
}
Over o1 = new Over(1);
Over o2 = new Over(1, 2);
Over o3 = new Over(1, 2, "야호");

위와 같이 Over 클래스의 생성자가 있다고 할 때,

여러 가지의 매개변수를 받는 생성자를 더 만들었다고 하면,

원래 3, 4번 라인의 생성자가 없었다면, 아래의 코드블럭의 2, 3번 라인은 오류가 생긴다.


이렇듯 하나의 클래스에서 다양하게 매개변수를 받아 쓸 필요가 있을 때,


오버로딩을 한다.

 

생성자뿐만 아니라, 메소드도 오버로딩해서 쓸 수 있다.

 

 

2. Overriding(@Override)

상속과 관련된 개념으로, 부모 클래스의 메소드를 자식 클래스에서 재정의해서 쓸 수 있는 것이다.

 

class Parent{
	public void yongdon(){
    	System.out.println("3만원")
    }
}

class Child extends Parent{
	@Override
	public void yongdon(){
    	System.out.println("5만원")
    }
}

위와 같이 클래스가 구성이 되었을 때,

Child 클래스의 인스턴스를 만들어서 yongdon 메소드를 출력했을 때, '5만원'이 출력되는 것을 알 수 있다.

부모 클래스에서 '3만원'을 프린트하는 것이 아니라, 자식 클래스에서 정의된 println("5만원")이 출력된다.

 

오버라이드를 하지 않고, 자식 클래스에서 yongdon을 호출하면 3만원이 나오겠지만,

재정의한 이상 5만원이 출력되는 '덮어쓰기'의 개념 오버라이딩.

유용하게 쓸 곳이 많을 것 같다.

728x90

댓글