loading

프로그래밍/JAVA

[JAVA] 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이점

침착곰 2021. 5. 16. 01:14
반응형

안녕하세요

프로그램을 개발 하다보면 오버로딩과 오버라이딩의 개념을 많이 들어보셨을 것 입니다

저도 가끔 오버로딩, 오버라이딩 용어가 비슷해서 헷갈릴 때가 있네요 ㅠ

이번 포스팅에서는 오버로딩과 오버라이딩에 대해서 알아보겠습니다!

 

목차

오버로딩(Overloading), 오버라이딩(Overriding)?
오버로딩(Overloading)
오버라이딩(Overriding)
Super() 메서드

오버로딩(Overloading), 오버라이딩(Overriding)?

오버로딩(Overloading) : 메서드의 이름이 같아도 매개변수의 타입과 개수가 다르면 사용이 가능한 개념

오버라이딩(Overriding) : 부모 클래스에서 정의된 메서드를 자식 클래스에서 다시 정의해서 사용하는 개념

 

개념이 전혀 다르지만 이름이 비슷비슷해서 많이 헷갈립니다;;

이제 예제를 통해서 알아보겠습니다!

 


오버로딩(Overloading)

오버로딩의 개념을 사용하여 구현한 내용입니다

같은 이름의 메서드지만 매개변수의 타입과 갯수가 달라 사용이 가능해집니다

public class Overloading {

	public static void main(String[] args) {
		CrazyKim();
		CrazyKim("CrazyKim");
		CrazyKim(100, 1000);
	}
	
	// 매개변수 없음
	static void CrazyKim()
	{
		System.out.println("CrazyKim의 오버로딩 테스트입니다");
	}
	
	// 매개변수 1개
	static void CrazyKim(String Blog)
	{
		System.out.println(Blog + "의 오버로딩 테스트입니다");		
	}

	
	// 매개변수 2개
	static void CrazyKim(int a, int b)
	{
		System.out.println("A + B = " + (a + b));
	}
}

 

결과 화면

 


 

오버라이딩(Overriding)

오버라이딩의 개념을 사용하여 구현한 내용입니다

부모class와 자식class에서 같은 메서드를 사용하지만 자식class에서 메서드를 재정의하여 사용을 합니다

public class Overriding {
	public static void main(String[] args) {
		// 자식 호출
		Child child = new Child();
		
		// 변수 초기화
		child.blog = "CrazyKim";
		child.Period = 6;
		
		// 자식에서 메서드 호출
		child.CrazyKim();
	}
}

// 부모 클래스 선언
class Mother {
	public int Period;
	
	public void CrazyKim() {
		System.out.println("블로그는 만들어진지 " + Period + "년이 됐습니다.");
	}
}

// 자식 클래스 선언
class Child extends Mother {
	String blog;
	
	public void CrazyKim() {
		System.out.println(blog + "의 블로그입니다.");
	}
}

 

결과 화면

 


Super() 메서드

추가사항으로 Super() 메서드를 사용하여 자식 class에서 부모 class의 메서드를 호출할 수 있습니다

아래와 같이 사용하면 됩니다

public class Overriding {
	public static void main(String[] args) {
		// 자식 호출
		Child child = new Child();
		
		// 변수 초기화
		child.blog = "CrazyKim";
		child.Period = 6;
		
		// 자식에서 메서드 호출
		child.CrazyKim();
	}
}

// 부모 클래스 선언
class Mother {
	public int Period;
	
	public void CrazyKim() {
		System.out.println("블로그는 만들어진지 " + Period + "년이 됐습니다.");
	}
}

// 자식 클래스 선언
class Child extends Mother {
	String blog;
	
	public void CrazyKim() {
		super.CrazyKim();
		System.out.println(blog + "의 블로그입니다.");
	}
}

 

결과 화면

 

여기까지 오버로딩과 오버라이딩의 차이점에 대해서 알아봤습니다!

반응형
그리드형