스위프트 - 상속

1823 단어
  • 상속은 하나의 객체(기본 클래스)가 상위 객체(하위 클래스)의 모든 속성과 동작을 획득하는 메커니즘입니다.
  • 메서드, 속성 및 첨자는 상속될 수 있으며 필요한 경우 하위 클래스에서 재정의할 수 있습니다.

  • 예시 :

    class Vehicle {
        var currentSpeed = 0.0
        var description: String {
            return "traveling at \(currentSpeed) miles per hour"
        }
        func makeNoise() {
            //make a noise
        }
    }
    



    class Bicycle: Vehicle {
        var hasBasket = false
    }
    
    bicycle.currentSpeed = 15.0
    print("Bicycle: \(bicycle.description)")
    


    재정의


  • 재정의 키워드를 사용하여 필요한 경우 인스턴스 메서드, 형식 메서드, 인스턴스 속성, 형식 속성 또는 서브스크립트에 대한 하위 클래스에서 사용자 지정 구현을 제공할 수 있습니다. 이를 재정의라고 합니다.
  • 메서드, 속성 또는 하위 스크립트를 재정의하는 동안 super 키워드를 사용하여 재정의의 일부로 기존 슈퍼클래스 구현을 포함할 수 있습니다.

  • 예시 :

    class Train: Vehicle {
        override func makeNoise() {
            print("Choo Choo")
        }
    }
    let train = Train()
    train.makeNoise()
    


  • 상속된 속성이 소스에서 저장 또는 계산된 속성으로 구현되는지 여부에 관계없이 모든 사용자 지정 Getter 및 Setter를 재정의할 수 있습니다. 속성의 이름과 유형은 모두 재정의 클래스에서 제공해야 합니다.
  • 상속된 읽기 전용 속성은 읽기-쓰기 속성으로 재정의할 수 있습니다. 그러나 상속된 읽기-쓰기 속성은 읽기 전용 속성으로 재정의할 수 없습니다.
  • setter 속성을 재정의하려면 해당 재정의에 대한 getter도 제공해야 합니다. 재정의 getter 내에서 상속된 속성의 값을 수정하지 않으려면 getter에서 super.someProperty를 반환하여 상속된 값을 간단히 전달할 수 있습니다.
  • 상속된 상수 저장 속성 또는 상속된 읽기 전용 계산 속성에는 속성 관찰자를 추가할 수 없습니다. 이러한 속성의 값은 설정할 수 없으므로 willSet 또는 didSet을 제공하는 것은 적절하지 않습니다.
  • 동일한 속성에 대해 재정의 setter와 재정의 속성 관찰자를 모두 제공할 수 없습니다. 속성 값의 변경 사항을 관찰하고 싶고 이미 해당 속성에 대한 사용자 정의 setter를 제공하고 있는 경우.

  • 재정의 방지


  • 메서드, 속성 또는 첨자가 재정의되는 것을 방지하려면 final 키워드를 사용하십시오.
  • 클래스를 서브클래싱하려는 시도를 방지하려면 클래스 앞에 final 키워드를 사용하십시오.
  • 좋은 웹페이지 즐겨찾기