오버라이딩(Overriding)은 객체 지향 프로그래밍에서 하위 클래스(subclass)가 상위 클래스(superclass)의 메서드(method)를 재정의하는 것을 말한다.

(1) 인스턴스 필드
(2) 인스턴스 메소드
(3) 정적 필드
(4) 정적 메소드

여기서 오버라이딩이 가능한 건 '인스턴스 메소드'뿐이다.

예를 들어 인스턴스 필드 int m 이 있다고 가정하고
A클래스를 상속받은 B클래스가 있을 때,

A a = new B();로 표현이 되고,

이때 인스턴스 필드의 기준점은 선언 타입이다.

a.m은 클래스 A의 필드값을 가리키는 것이다.

반대로, 인스턴스 메소드는 오버라이딩이 되므로 생성자가 기준점이 된다.

생성자가 무엇이냐에 따라 출력이 달라진다.

A a = new B();

인스턴스 필드 / 정적 필드 / 정적 메소드

이 3가지는 기준점이 클래스 A이다. (가리키는 쪽)


인스턴스 메소드만 오버라이딩이 가능하기 때문에 생성자 쪽을 가리킨다.

profile
I'm still hungry.

0개의 댓글