CH7-7~9

[자바의 정석 - 기초편] ch7-7~9 오버라이딩

오버라이딩(Overriding)에 대해 배워보자.

이건 상속받은 조상의 메서드를 입맛대로 변경하는 것임. 참고로 오버라이드는 덮어쓰다라는 의미.

예를 들어봅시다.

Untitled

원래 이런 메서드가 있었다고 해보자.. x와 y 좌표 출력하는 기능갖고 있음.

Untitled

이런 친구가 위 메서드를 상속받았을때는..?

Untitled

이렇게 상속받은 메서드는 좌표를 출력하는 기능을 갖는데, 사용자는 당연히 z까지 출력하는게 기능에 포함되어 있다고 생각할 것. 이때 상속받은 메서드를 z까지 출력할 수 있게 바꿀 수 있다. 이게 바로 오버라이딩이다.

이때 함수 시그니처는 변경 불가하고, 바디만 바꿀 수 있다.

참고로 오버라이딩했다고 조상에게 받은 메서드가 변경되는건 아니고, 그 상속받은 메서드도 남아있다. 복사해서 새로 이름이 같은 메서드를 만드는 것임.

자주 쓰이는 오버라이딩은 toString을 이용하는 것임… 이친구는 println(참조변수)와 실행이 동일하기 때문에..

오버라이딩의 3가지 조건

  1. 선언부가 조상메서드와 동일해야 한다… 반환타입이나, 매개변수목록이나..
  2. 접근제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다. 이게 무슨 말? 접근제어자는 public, protected, default, private 네가지 있음.