반응형

Java의 오버라이딩은 오버로딩과 이름은 비슷하지만

다른 기능을 수행합니다.

 

일종의 상속과 비슷한 역할을 하는데요.

 

기존에 있던 메소드를 공유받아서 조금 변형시켜 다르게 재정의하여

사용하는 것이 오버라이딩의 기본 개념입니다.

 

오버라이딩 정의

  • 상속에 관련된 부모 클래스의 메소드를 상속받아 다른 형태로 재정의하는 것.
  • 예를 들어 어머니로 부터 옷을 물려받아 리폼하여 새롭게 만드는 것이 바로 오버라이딩.

 

오버라이딩의 장점

  • 비슷한 형태의 메소드를 다시 작성하지 않아 효율성 향상
  • 상속으로 인해 코드의 재사용성 향상
  • 비슷하지만 다른 형태의 재정의가 가능해 다향성 확립

 

예제 소스

public class clothes {
	
	public void cut_height() {
		System.out.println("높이를 수선하였습니다.");
	}
	
	public void cut_width() {
		System.out.println("너비를 수선하였습니다.");
	}
	
	public void show_price() {
		System.out.println("TAG 가격 : 50000");
	}
	
	
}
class reform extends clothes {
	
	public void cut_height() {
		System.out.println("높이를 나에게 맞게 수선하였습니다.");
	}
	
	public void cut_width() {
		System.out.println("너비를 나에게 맞게 수선하였습니다.");
	}
	
}

public class wardrobe extends clothes{

	public static void main(String[] args) throws IOException {

		clothes ct = new clothes();
		reform re = new reform();
		
		ct.cut_width();
		ct.cut_height();
		
		re.cut_width();
		re.cut_height();
		re.show_price();
		
		
	}
}

위의 소스는 상속의 형태를 띠고 있는 프로그램인데요.

cut_height, cut_width 메소드는 부모에게도 자식에게도 존재합니다.

 

해당 메소드를 상속을 통해 받았다고 하더라도

자식이 이를 재정의 했으므로 

자식을 인스턴스화 하여 해당 메소드를 실행하면

자식이 정의한 메소드 결괏값이 출력됩니다.

 

그리고 show_price메서드는 자식이 재정의하지 않고

부모 클래스에서만 존재하기 때문에

자식 클래스를 인스턴스화 하고 이 메소드를 호출하면

부모 클래스에 존재하는 show_price 메소드가 실행되게 됩니다.

 

자식 클래스에서 메소드의 재정의.

이것이 바로 오버라이딩의 기본 개념입니다.

반응형

+ Recent posts