OOP의 4대 특성중에는 다형성(Polymorphism)은 같은 자료형이지만 다양한 변수나 메소드를 대입하여 다양한 결과를 얻어내는 능력을 말합니다.

 

오버라이딩(Overriding)

- 상위 클래스에서 선언된 메소드를 하위 클래스에서 재정의 해서 사용하는 방식입니다.

- 부모 클래스의 생성자를 자식 클래스에서 선언하는 것(super()) 도 오버라이딩입니다.

- 오버라이딩의 충족 조건(1. 메소드 이름, 2. 메소드 매개 변수의 숫자와 데이터 타입&순서, 3. 메소드 리턴 타입)

 

오버로딩(Overloading)

- 메소드명은 같지만 리턴 타입이나 매개변수에 다르게 해서 여러가지 메소드를 선언 하는 방식입니다.

- 하나의 메소드 이름으로 여러 기능을 구현 할 수 있습니다.

- 매개 변수가 다르거나 리턴 타입이 달라야 합니다. 

- 하지만 리턴 타입이 달라도 매개 변수가 같으면 안됩니다.

 

오버라이딩과 오버로딩의 사용법

- 오버라이딩을 사용 할 때 하위 클래스의 메소드에 @Override어노테이션을 사용하여 명시적으로 사용 할 수 있습니다.

package java_study;

public class Polymorphism {
	public static void main(String[] args) {
		Child_poly cp = new Child_poly();
		cp.overridingHello();
		cp.overloadingMethod();
		cp.overloadingMethod("hey");
		cp.overloadingMethod("yolo", 100);
	}
}

class Parent_poly {
	public void overridingHello() {
		System.out.println("Hello from Parent");
	}
}

class Child_poly extends Parent_poly {
	// @Override
	public void overridingHello() {
		System.out.println("Hello from Child");
	}
	
	public void overloadingMethod() {
		System.out.println("overloading without paremter");
	}
	
	public void overloadingMethod(String str) {
		System.out.println("str : " + str);
	}
	
	public void overloadingMethod(String str, Integer i) {
		System.out.println("str : " + str + " / Integer : " + i);
	}
	
	public Integer overloadingMethod(Integer i) {
		return i;
	}
	
}

+ Recent posts