Overriding (재정의)
프로퍼티 오버라이딩 (Overriding Properties)
- 프로퍼티의 접근자, 설정자, 감시자를 재정의
- 저장 프로퍼티를 오버라이딩 할 때는 연산프로퍼티가 된다.
- 프로퍼티의 오버라이딩은 상위 클래스의 기능을 하위 클래스가 확장, 또는 변경하는 형태로만 진행되어야 한다.
메소드 오버라이딩 (Overriding Methods)
- 오버라이딩 대상이 되는 메소드의 매개변수 개수나 타입, 그리고 반환 타입은 변경 할 수 없다.
- 메소드 오버라이딩을 통해 변경할 수 있는 것은 오로지 내부 구문들 뿐이다.
프로퍼티 옵저버 오버라이딩 (Overriding Property Observers)
- 프로퍼티 오버라이딩을 사용하여 상속된 프로퍼티에 프로퍼티 옵저버를 추가할 수 있다.
- 상속 된 프로퍼티의 값이 변경될 때, 해당 프로퍼티가 처음 구현된 것과 상관없이 알림을 받을 수 있다.
- 상속된 상수 저장 프로퍼티 또는 읽기전용 연산프로퍼티에는 프로퍼티 옵저버를 추가할 수 없다.
- 동일한 프로퍼티에 대해 override setter와 override 프로퍼티 옵저버를 둘다 제공할 수는 없다.
Super Object
- 부모클래스의 인스턴스를 참조할 수 있도록 super라는 키워드를 제공한다.
오버라이딩을 막는법 (Preventing Override)
- 재정의를 원치 않을 경우 사용한다.
- final 키워드를 붙여서 사용한다.
만약 부모클래스의 저장 프로퍼티에 private을 붙인다면?
- 부모클래스의 인스턴스에 private을 하면 상속 자체가 안 된다.
- 접근 제한도 상속된다.