[Swift入門] overrideの意味と使い方

Swift

Swiftのoverrideは、よく見るもののなんとなくで使っていたので、一度調べてみました。

本記事では、Swiftのoverrideの意味と使い方を勉強していきます。

環境: Swift 4.2

Swift overrideの使い方

overrideは親(スーパー)クラスのメソッドの一部を変えて使える

overrideは親(スーパー)クラスのメソッドの一部を変更して子(サブ)クラスで使いたい時に用いられます。

例えば、以下の親クラスと子クラスの例をみてください。

①‥親クラスでchageColorメソッドを定義

②‥Carクラスを継承する(サブクラスになる)

③overrideを使って、親クラスのchangeColorメソッドを使う。メソッドの中に新しく加えたい処理を書く。

こんな感じで、overrideは親クラスのメソッドに何か書き換えて使いたい時に使えます。

XcodeでViewControllerファイルを作った時のviewDidLoadメソッドも同じです。

①ViewControllerクラスは、UIViewControllerクラスを継承する

②親クラス(UIViewController)のviewDidLoadメソッドを使う。メソッドの中身書き換えることができる。

③superを使って、親クラスのviewDidLoadメソッドを呼び出している。

④親クラスのメソッドに何か追加したいことを書く

overrideできないようにしたい場合

親クラスのメソッドを子クラスからoverrideで使えないようにしたい場合は、

finalを使います。

①で親クラスのchangeColorメソッドの前にfinalをつけて、子クラスからoverrideをできなくしています。

②のところで、changeColorをoverrideで書こうとすると、エラーが出ます。

“Instance method overrides a ‘final’ instance method”

finalがついたメソッドなのでoverrideできませんということです。

classにfinalをつける

上では親クラスのメソッドにfinalをつけました。

親クラス自体にfinalをつけることもできます。

①でCarクラスにfinalをつけています。これでCarクラスは継承自体できなくなります。子クラスを作れないということです。

なので②でCarクラスを継承した子クラスを作ろうとすると、エラーが出ます。

“Inheritance from a final class ‘Car'”

finalがついたクラスからは継承できませんという感じです。

まとめ

以上Swiftのoverrideについてまとめました。

・Swiftのoverrideは親クラスのメソッドを書き換えて使うことができる
・finalをつけるとoverrideできなくなる。

未経験からエンジニアなりませんか?:社会人転職コース

参考:

SwiftでOverride(オーバーライド)する方法

【Swift】クラスの継承、メソッドのオーバーライドの方法。