본문 바로가기

swift 기본 문법

Swift 기본 문법) 상속 알아보기

반응형

상속을 공부하는데 어려움이 항상 많았는데 좋은 포스팅이 있길래 이 글을 토대로 공부를 해보고자 한다. 

 

클래스(Class)는 상속이 가능하며, 오직 하나의 상속만이 가능하다. 또한 메섣, 프로퍼티 등을 상속할 수 있다. 

 

Base Class(기반 클래스)란?

다른 어떤 클래스로부터도 상속받지 않은 클래스를 기반 클래스라고 한다. 

 

class Vehicle {
    var currentSpeed: Double = 0.0
    var description: String {
        return "현재 속도는 \(currentSpeed)입니다. "
    }
    func makeNoise() {
        
    }
}

let bike = Vehicle()
print(bike.description)

간단하게 Class를 만들어봤다. 

Vehicle이라는 Class를 보면 "어떤 클래스"도 상속받지 않았기 때문에 Base Class(기반 클래스)라고 할 수 있다. 

 

 

Subclassing(서브클래싱)이란?

이제 여기서 오늘의 주제인 "상속"이 나온다.

상속(서브클래싱)을 하면 부모로 부터 성격을 상속받고 자기 자신 고유의 특성도 추가할 수 있다. 

Base Class(기반 클래스)를 기반으로 새로운 클래스를 만드는 것이라고 할 수 있다. 

 

역시 예제 코드를 보겠다. 

class Vehicle {
    var currentSpeed: Double = 0.0
    var description: String {
        return "현재 속도는 \(currentSpeed)입니다. "
    }
    func makeNoise() {
        
    }
}

class Bike :Vehicle {
    var hasBasket = false
}

let bike = Bike()
bike.currentSpeed = 60.0
print(bike.description) //현재 속도는 60.0입니다.

 

Bike라는 클래스를 선언하고 Vehicle이라는 클래스를 상속받고 있다. 

이미지를 보면 Bike클래스가 Vehicle이 가지고 있던 프로퍼티에 접근할 수 있는 것을 알 수 있다. 

 

이처럼 실제론 상속받은 Vehicle 인스턴스의 멤버들을 포함하고 있다. 

 

Bike란 클래스가 Vehicle이라는 클래스를 "상속"받고

Bike란 클래스가 Vehicle이라는 클래스를 상속받은 것을 "서브클래싱"했다고 한다.

 

또한 이때

상속 받은 Bike를 서브 클래스(Sub Class), 상속 받고자 하는 Vehicle를 슈퍼 클래스(Super Class)라고 한다. 

 

반응형

Final 키워드란?

개발 공부를 하다보면 다른 분들이 Final Class를 만든 것을 적지 않게 보게 된다. 

당시에는 무슨 내용인지 몰랐지만 이렇게 공부하고 보면 간단하다. 

 

"현재 이 클래스는 상속 받을 수 없다."

 

방금 만든 Vehicle 클래스에 Final을 입력해보면 쉽게 이해할 수 있을 것이다. 

 

바로 에러가 나타난다.

에러 내용을 보면 Vehicle 클래스으로는 상속을 받을 수 없다. 라고 적혀있다. 

 

개발을 하면서 해당 클래스가 상속을 받을 일이 없다고 명시한다면 좀 더 이해하기 쉬운 코드가 될 것 같다. 

 

 

 

오늘은 상속의 기초에 대해서 공부해보았는데 이렇게 공부를 하면 이해는 되지만 막상 적용하려고 보면 어려운 점이 많다.

때문에 좀 더 기초를 탄탄히 해야겠다는 생각을 가지게 되는 것 같다. 

 

https://babbab2.tistory.com/125

 

Swift) 상속(Inheritance) 정복하기 (1/2) - 상속이란?

안녕하세요!!! 소들입니다 :)))) 얼른 Swift 문법 포스팅을 모두 끝..ㄴㅐ고.... iOS와 Rxswift 포스팅으로 넘어가고 싶은...... 소들의... 바람은.. 언제쯤.. 이뤄질지.. 🐂🐂 쨌든 이번 포스팅은 "상속"에

babbab2.tistory.com

https://jusung.gitbook.io/the-swift-language-guide/language-guide/13-inheritance

 

상속 (Inheritance) - The Swift Language Guide (한국어)

서브클래스에서 특정 메소드, 프로퍼티, 서브스크립트가 오버라이드 되는 것을 방지하려면 final키워드를 사용합니다. 다시말해, final로 선언되면 override되는 것을 막을 수 있습니다. (final func, fin

jusung.gitbook.io

 

반응형