[JAVA] 오버로딩과 오버라이딩의 차이

half·2023년 9월 26일
0

오버로딩과 오버라이딩은 다른 개념이다.

오버로딩(Overloading) : 같은 이름의 메소드를 여러개를 가지면서 매개변수 유형 혹은 개수를 다르게 가져가는 기술
오버라이딩(Overriding) : 상위 클래스에서 생성된 메소드를 하위 클래스에서 재정의해 사용

1) 오버로딩 (Overloading)

오버로딩은 인자값 매개변수의 자료형 혹은 개수가 다르면 계속해서 만들 수 있지만, 매개변수가 동일하고 개수가 똑같고 변환타입이 다를 경우에는 사용이 불가능 하다.

package examples;

public class Overloading {
	
	public String overloading(String str) {
		return "Overloading no.1";
	}
	
    /* 
	public int overloading(String str) {
		String result = "Overloading no.2";
		return 2;
	}
    해당 메소드는 매개변수는 1번과 같지만 return 값을 다르게 주었을때는 에러가 발생한다.
    */
	
	public String overloading(int integer) {
		return "Overloading no.3";
	}
    
    public String overloading(int integer, String str) {
		return "Overloading no.4";
	}
}

2) 오버라이딩 (Overriding)

오버라이딩은 상위 클래스의 메소드를 상속받아 재정의 하며 메소드 이름이 같아야 하고 매개변수, 변환타입이 같아야 하며, 자식 클래스의 오버라이딩 하려는 클래스의 메소드의 접근 제어자는 부모 클래스의 접근 제어자보다 크거나 같아야 한다.

부모 클래스

package examples;

public class Parent {
	public void tech(String input) {
		System.out.println("부모 클래스");
	}
}

자녀 클래스

package examples;

public class Children extends Parent {
	public void tech(String input) {
		System.out.println("자녀 클래스");
	}
}

실행

package examples;

public class Overriding {
	public static void main(String[] args) {
		Parent p = new Parent();
		Children c = new Children();
		p.tech("Parent");
		c.tech("Children");
	}
	
}
profile
아메리카노 수혈 받는 중

0개의 댓글