자바 객체 지향 프로그래밍 - 오버라이딩, super

계리·2022년 10월 6일
0
post-thumbnail

오버라이딩이란

조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속 받은 메서드를 그대로 사용하기도 하지만 자손 클래스 자신에 맞게 변경해야하는 경우가 많다. 이럴 경우 조상의 메서드를 오버라이딩하여 사용한다.

오버라이딩의 조건

자손 클래스에서 오버라이딩하는 메서드는 조상 클래스와 메서드와

  • 이름이 같아야 한다.
  • 매개변수가 같아야 한다.
  • 반환타입이 같아야 한다.

조상 클래스의 메서드를 자손 클래스에서 오버라이딩할 때

  • 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
  • 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
  • 인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다.

오버로딩과 오버라이딩

종류내용
오버로딩기존에 없는 새로운 메서드를 정의 하는 것
오버라이딩상속받은 메서드의 내용을 변경하는 것

오버로딩과 오버라이딩 구분 예시

class Parent{
	void parentMethod() {}
}

class Child extends Parent {
	void parentMethod() {}			// 오버라이딩
    void parentMethod(int i) {} 	// 오버로딩
    
    void childMethod() {}
    void childMethod(int i) {}		// 오버로딩
	void childMethod() {}			// 에러. 중복정의 되었음(already definded in Child)	    
}

super

super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수이다. 멤버변수와 지역변수의 이름이 같을 때 this를 붙여서 구별했듯이 상속받은 멤버와 자신이 멤버와 이름이 같을 때는 super를 붙여서 구별할 수 있다.


※ 참고 문헌

남궁성, 『Java의 정석 3nd Edition』, 도우출판(2016) 책으로 공부하고 정리한 내용 입니다.

profile
gyery

0개의 댓글