본문 바로가기

JAVA/JAVA

[자바의 정석] 7-2. 오버라이딩(overriding)

오버라이딩 : 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것

 

오버라이딩의 조건

 자손클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와
  - 이름이 같아야 함
  - 매개변수가 같아야 함
  - 반환타입이 같아야 함

1. 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
   ※ 참고 : 접근제어자 넓->좁 : publid, protected, (default), private

2. 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

3. 인스턴스메서드를 static 메서드로 또는 그 반대로 변경할 수 없다.

 

오버로딩 vs 오버라이딩

오버로딩(overloading) : 기존에 없는 새로운 메서드를 정의하는 것(new)
오버라이딩(overriding) : 상속받은 메서드의 내용을 변경하는 것(change, modify)
1
2
3
4
5
6
7
8
9
10
11
class Parent {
    void parentMethod() {)
}
 
class Child extends Parent {
    void parentMethod() {}    //오버라이딩
    void parentMethod(int i) {} //오버로딩
 
    void childMethod() {}
    void childMethod(int i) {} //오버로딩
}
cs

 

super

super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수
 > 상속받은 멤버와 자신의 멤버와 이름이 같을 때 super를 붙여서 구별가능

- 인스턴스 메서드에서만 사용 가능

 

super()

- this()와 마찬가지로 upsert() 역시 생성자! 

- this()는 같은 클래스의 다른 생성자를 호출하는데 사용되지만, supert()는 조상클래스의 생성자를 호출하는데 사용됨

 

출처 : <자바의 정석>, 남궁 성