Programming Language/Java

[Java] 오버라이딩(overriding)

LeeJaeJun 2023. 12. 30. 23:51
728x90
반응형

오버라이딩(overriding)

- 조상 클래스로부터 상속받은 메서드 내용을 변경하는 것.

- 오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부는 조상의 것과 완전히 일치해야 하므로 다음과 같은 조건을 충족해야 한다.

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

  1) 이름이 같아야 한다.

  2) 매개변수가 같아야 한다.

  3) 반환타입이 같아야 한다.

 즉, 선언부가 서로 일치해야 한다는 것이다.

 

(+) 접근 제어자(access modifier)와 예외(exception)는 제한된 조건 하에서만 다르게 변경할 수 있다.

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

 => 접근 제어자의 접근범위는 public, protected, (default), private 순으로 넓다. 조상 클래스에 정의된 메서드의 접근 제어자가 protected라면 이를 오버라이딩하는 자손 클래스의 메서드는 접근 제어자가 public 또는 protected이어야 한다는 것이다. 대부분은 같은 범위의 접근 제어자를 사용한다.

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

 * 인스턴스메서드를 staitc메서드로 또는 static메서드를 인스턴스메서드로 변경할 수 없다.

- 조상 클래스에 정의된 static메서드를 자손 클래스에서 똑같은 이름의 static메서드로 정의할 수 있지만 이는 오버라이딩이 아니라 각 클래스에 별개의 static메서드를 정의한 것이다.

728x90
반응형

'Programming Language > Java' 카테고리의 다른 글

[Java] 다형성(polymorphism)  (0) 2023.12.31
[Java] 제어자(modifier)  (0) 2023.12.31
[Java] 상속(inheritance)  (0) 2023.12.30
[Java] 오버로딩(overloading)  (0) 2023.12.30
[Java] 변수의 종류  (0) 2023.12.30