최대 1 분 소요



오버라이딩

슈퍼클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속받은 내용을 그대로 사용하기도 하지만 보통 내용을 추가하여 사용하는 경우가 많다.

  1. 매서드 선언부가 슈퍼 클래스의 메서드와 일치해야 한다.

오버라이딩은 메서드의 내용만을 새로 작성하는것이기 때문에 메서드이름, 매개변수, 반환타입은 슈퍼클래스와 완전히 일치해야한다.

  1. 접근제어자는 슈퍼 클래스의 메서드보다 좁은 범위로 변경 할 수 없다.

슈퍼클래스에서 접근제한자 protected라면, 오버라이딩해서 사용할때는 서브클래스에서 메서드 접근제한자를 설정할때는 protected 또는 public으로 선언해줘야한다.

  1. 슈퍼클래스의 메서드의보다 많은 수의 예외를 선언할 수 없다.
class Parent {
	void parentMethod() throws IOException, SQLException{
	. . . 
	}
}
class child extends Parent {
	void parentMethod() throws IOException {
	. . . 
	}
}

위에 코드를 보면 슈퍼클래스보다 서브클래스 parentMethod()에서 예외 개수가 적기 때문에 올바르게 오버라이딩 되었다고 볼 수 있다.

오버라이딩과 오버로드

오버로딩과 오버라이딩은 이름이 비슷해서 헷갈릴수도 있지만 명백하게 다른것이라는 것을 알수 있다.

오버라이딩

◇ 상속받은 메서드의 내용을 변경하는 것

오버로딩

◇ 기존에 없는 새로운 메서드를 정의



class Parent {
	void parentMethod(){}
}

class Child extends Parent {
	void parentmethod() {}  // 오버라이딩
	void parentmethod(int i) {} // 오버로딩

void childmethod() {}
void childmethod(int i) {} // 오버로딩
}

카테고리:

업데이트:

댓글남기기