Swift랑 친해지기

[Swift] 상속 (override, super, final)

데브킹덕 2022. 9. 20. 17:05

 

People이라는 슈퍼(부모)클래스를 상속받는 Person이라는 자식클래스르 만듬

자식클래스는 슈퍼클래스에 있는  프로퍼티와 메서드를 사용할 수 있음 

 

 

Override

- 서브 클래스는 슈퍼클래스에 정의된 메서드,프로퍼티,서브 스크립트를 그대로 사용하지 않고 자신만의 기능으로 변경하여 사용가능

- override 키워드 사용

자식 클래스에서 People 슈퍼클래스의 speak()이라는 메서드를 override하여 자신만의 기능으로 변경하여 사용하였음

다음과 같이 출력하게 됨

오늘 날씨는 Good Morning

 

 

super. 

슈퍼클래스를 가리키는 키워드 

반대말  -> self

슈퍼클래스의 speak()메서드 블록을 실행하고 싶다면

super.를 붙여주어야함

슈퍼클래스에 있는 프로퍼티도 서브클래스에서 재정의가 가능함

super.을 앞에 붙여주면 사용 가능 

  • 계산,저장 프로퍼티를 오버라이딩 하는 프로퍼티는 getter,setter를 가질 수 있음
  • 자식프로퍼티에서 재정의하려는 프로퍼티는 슈퍼클래스 프로퍼티의 이름과 타입이 일치해야함
  • 슈퍼클래스에서 Read - Write 로 선언된 프로퍼티를 서브클래스에서 Read - Only 로 오버라이드 할 수 없지만
  • 슈퍼클래스에서 R/O로 선언된 프로퍼티는 서브클래스에서 R/W 로 오버라이드 할 수 있음

 

final

final을 클래스나 메서드 앞에 붙여주면 재정의를 할 수 없게되어 상속 불가능 해짐 

 

final 클래스의 경우 상속 불가

 

final 메서드일 경우 상속 불가