protocol ProA{ var propA:Int{get} } class ClsA:ProA{ var propA:Int=800 } class ClsB:ClsA{ } func funcA(_ arg:ProA){ print(arg.propA) } var insA=ClsA() funcA(insA) var insB=ClsB() funcA(insB)
スーパークラスClsAがあるプロトコルProAに準拠しており、
ClsAのサブクラスClsBを作った時、ClsBは自動的に(下記のような
ProAへの準拠の明記をせずに)ProAへ準拠したクラスになるのでしょうか?
class ClsB:ClsA,ProA{ }
試しに以下のようにして動かしてみると、
protocol ProA{ var propA:Int{get} } class ClsA:ProA{ var propA:Int=1000 } class ClsB:ClsA,ProA{ } func funcA(_ arg:ProA){ print(arg.propA) } var insA=ClsA() funcA(insA) var insB=ClsB() funcA(insB)
error: MyPlayground.playground:20:17: error: redundant conformance of 'ClsB' to protocol 'ProA' class ClsB:ClsA,ProA{ ^ MyPlayground.playground:20:7: note: 'ClsB' inherits conformance to protocol 'ProA' from superclass here class ClsB:ClsA,ProA{
のようなエラーが出ました。やはり継承した時点でプロトコルへの準拠も継承しているようなのですが、
そういう理解で問題ないでしょうか?
あとドキュメントでこのことは明示的に説明されていますでしょうか?
ある場合場所を教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/03 08:25
2020/02/03 08:37
2020/02/03 09:52