override 덮어쓰다.
오버라이딩
상속받은 조상의 메소드를 자신에 맞게 변경하는 것.
이 때, 부모 클래스 Point에게는 없던 z 값이 자식 클래스 Point3D에 와서 새로 추가 되었다.
메소드 이름은 그대로 getLocation이다.
메인 메소드에서 호출하면 부모의 값 대신 오버라이딩 된 자손의 값이 출력된다.
이것을 오버라이딩이라고 한다.
메소드 이름은 변경하지 않고 값만 변경한다.
오버라이딩의 조건
1. 선언부(반환 타입, 메소드 이름, 매개변수 목록)가 조상 클래스의 메소드와 일치해야 한다.
2. 접근 제어자를 조상 클래스의 메소드보다 좁은 범위로 변경할 수 없다.
public > protected > (default) > private 인데,
왼쪽으로 갈 수록 범위가 넓어진다.
조상이 public인데, 자손이 private 일 수는 없다.
3. 예외는 조상 클래스의 메소드보다 많이 선언할 수 없다. (다른 포스트에서 예외에 대해 설명)
자주 헷갈리는 용어
오버로딩 기존에 없는 새로운 메소드를 같은 이름으로 정의하는 것. (new) (주로 매개변수가 다름)
오버라이딩 상속받은 메소드의 내용을 변경하는 것. (change, modify)
'자바' 카테고리의 다른 글
패키지, 클래스 패스 (0) | 2022.10.11 |
---|---|
참조변수 super / super() (0) | 2022.10.11 |
상속, 포함, Object 클래스 (0) | 2022.07.18 |
멤버변수의 초기화와 시점 (0) | 2022.07.16 |
생성자 this(), 참조변수 this. (0) | 2022.07.15 |