Swift의 상속(Inheritance)

썹스·2022년 10월 14일
0

Swift 문법

목록 보기
18/68

상속(Inheritance)

  • 객체지향 언어의 대표 특징 중 하나인 상속(Inheritance)코드의 재사용과 확장성을 높여준다는 특징을 가지고 있습니다.

  • Swift는 객체지향 언어의 한 종류이기 때문에 이러한 상속 기능을 가지고 있으며, 유일하게 클래스(class)만이 상속을 사용할 수 있습니다.

  • 프로토콜(protocol)은 상속이 아닌 채택(adopt)이라는 표현을 사용하고 있습니다.


📌 Swift의 상속 및 재정의

  • Swift는 다른 언어와 다르게 단일 상속(Single Inheritance)만을 허용하고 있습니다.

  • 상속해 주고 있는 클래스를 부모 클래스(Parent class) 또는 슈퍼/상위 클래스(Super class)라 부르며, 상속을 받고 있는 클래스를 자식 클래스(Child) 또는 서브/하위 클래스(Sub class)라 부르고 있습니다.

  • 상속받은 클래스는 상위 클래스의 저장 속성(Stored Properties)을 수정할 수 없지만, 계산 속성(재정의 설명)의 경우에는 부분적인 재정의(메서드 기능 확장만)가 가능합니다.

  • 상위 클래스의 메서드를 정의할 때는 함수 키워드(func) 앞에 "override" 키워드를 작성해야만 재정의를 할 수 있습니다.


📌 상속의 기본 문법

✅ 상속을 선언할 때는 콜론(":") 문자를 사용하며, 콜론을 기준으로 왼쪽이 자식 클래스 그리고 오른쪽이 부모 클래스입니다.

클래스가 다른 인스턴스들이 상속을 통해 같은 프로퍼티에 접근할 수 있습니다.

class A{
    var a: Int = 1
}

class B: A{    // B클래스를 기준으로 보면, A클래스는 부모 클래스이자 슈퍼 클래스입니다.
    var b: Int = 10
}

var x = B()
x.a     // 1
x.b     // 10

클래스가 다른 인스턴스들이 상속을 통해 같은 메서드를 사용할 수 있다.

class A{
    var a: Int = 1
    func hello(){
        print("저는 A입니다.")
    }
}

class B: A{
    var b: Int = 10
}

class C: A{
    var c: Int = 100
}

var kim = A()
var lee = B()
var park = C()

kim.hello()   //저는 A입니다.
lee.hello()   //저는 A입니다.   //A클래스의 메서드를 상속받아 사용
park.hello()  //저는 A입니다.   //A클래스의 메서드를 상속받아 사용

상속은 단일 상속만 가능합니다.

class A{
    var a: Int = 1
}

class B: A{
    var b: Int = 10
}

class C: A{
    var c: Int = 100
}

class D: B{
    var d: Int = 1000
}

class D: C{   //다중 상속 불가능(Invalid redeclaration of 'D')
    var d: Int = 1000
}


Reference

참고자료: 앨런 Swift문법 마스터 스쿨

profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글