継承、オーバーライド、final
基底クラスを作成し、継承で拡張し、メソッドやプロパティを override し、 super を呼び出し、 final で動作を固定します。
「継承、オーバーライド、final」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全3レッスンが含まれています。
概要
Swiftのクラスは継承をサポートしています。動作をoverrideし、superを呼び出せます。動作を固定するにはfinalを使います。
基底クラス
サブクラスでoverrideできるインスタンスメソッドを持つ基底クラスを作成します。
class Animal {
var name: String
init(name: String) { self.name = name }
func speak() -> String { "..." } // to be overridden
}
let a = Animal(name: "Thing")
print(a.speak())メソッドをoverrideする
サブクラスで新しい実装を提供するときはoverrideキーワードを使います。
class Dog: Animal {
override func speak() -> String { "woof" }
}
let d = Dog(name: "Rex")
print(d.speak()) // "woof"superの呼び出し
superを呼び出して基底クラスの動作を再利用し、サブクラスで拡張します。
class Cat: Animal {
override func speak() -> String {
let base = super.speak()
return base + " meow"
}
}
print(Cat(name: "Mimi").speak()) // "... meow"overrideとfinal
プロパティとメソッドをoverrideします。クラスまたはメンバーにfinalを付けると、それ以上のサブクラス化やoverrideを禁止できます。
class Vehicle {
var description: String { "vehicle" } // computed property
func drive() { print("move") }
}
class Car: Vehicle {
override var description: String { "car" } // override property
override func drive() { print("vroom") }
}
final class ElectricCar: Car { // cannot be subclassed
final override func drive() { print("zzzz") } // cannot be overridden further
}
let e = ElectricCar()
print(e.description)
e.drive()注意点とヒント
注意点:
- 深い継承階層よりもコンポジションを優先します。
- サブクラス化による拡張を意図していない限り、クラスやメンバーにはfinalを付けます。
- 基底クラスの動作を置き換えるときは、必ずoverrideを使います。
finalキーワード
確認:サブクラス化やoverrideを禁止するキーワードはどれでしょうか。
まとめ
まとめ:基底クラスを定義し、サブクラスでメソッドやプロパティをoverrideし、動作を再利用するためにsuperを呼び出します。動作を固定するには型やメンバーにfinalを付けます。
よくある質問
「継承、オーバーライド、final」レッスンは無料ですか?
はい。「継承、オーバーライド、final」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全3レッスンが含まれています。
「継承、オーバーライド、final」で何を学びますか?
基底クラスを作成し、継承で拡張し、メソッドやプロパティを override し、 super を呼び出し、 final で動作を固定します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「継承、オーバーライド、final」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。