protocol ProtocolA {
var mustBeSettable: Int { get set }
func mustBeImplemented()
}
class ClassA: ProtocolA {
var mustBeSettable: Int
func mustBeImplemented(){
print("method implemented by some class")
}
}
요약 - 클래스는 하나의 슈퍼클래스만 상속받을 수 있지만, 프로토콜은 여러개 도입(구현) 가능기 때문이다.
그렇다면 프로토콜을 도입하는 것은 클래스를 상속받는 것과 차이점이 없어보이지 않는가..?
아래 예제를 봐보자.
class ClassB {
...
}
protocol ProtocolB {
}
아래 SomeClass는 슈퍼클래스인 SomeSuperClass를 상속받고, 그 뒤에 SomeProtocol, SomeOtherProtocol 프로토콜을 구현하였다.
만약 클래스 상속과, 프로토콜 여러개를 도입(구현)하고 싶다면 첫번째 자리는 (:) 뒤의 첫번째 자리는 무조건 슈퍼클래스가 와야 한다.
그리고 그 뒤에 (,)를 찍고 프로토콜 여러개를 나열하면 된다.
그 이유는 클래스는 하나의 슈퍼클래스만 상속받을 수 있지만, 프로토콜은 여러개 도입(구현) 가능기 때문이다.
class ClassA: ClassB, ProtocolA, ProtocolB {
var mustBeSettable: Int
func mustBeImplemented(){
print("method implemented by some class")
}
}
이미지는 어디서 가져왔어요.. 빨리 기초라도 배웠으면 좋았을텐데. 가끔 멍때리고 머리를 비워줘야 또 채울수 있어요.