このページには広告が含まれる場合があります。
もくじ
問題
@override アノテーションの目的は何ですか?
- 変数を最終的な値に設定することを示すため
- メソッドをオーバーライドしていることを明示するため
- クラスを継承していることを示すため
- 非同期処理であることを示すため
正解と解説動画
←「+」をクリックしてください
正解
2.メソッドをオーバーライドしていることを明示するため
解説動画
@override アノテーションとは?
@override
は、「親クラスのメソッドを上書きしていますよ」 ということを明示するためのアノテーションです。
class Vehicle { void move() { print('Vehicle is moving'); } } class Car extends Vehicle { @override void move() { print('Car is moving'); } } void main() { Car myCar = Car(); myCar.move(); // 出力: Car is moving }
この例では、親クラス Vehicle
の move
メソッドを子クラス Car
が上書き(オーバーライド)しています。@override
を付けることで、親クラスと同じメソッドを意図的に変更していることが明示されています。
クラスの継承とオーバーライドの基本
そもそも「継承」とは何でしょうか?
簡単に言うと、既存のクラスをベースにして、新しいクラスを作る ことです。例えば、親クラスを「車」、子クラスを「トラック」と考えるとわかりやすいでしょう。
class Vehicle { void stop() { print('Vehicle is stopping'); } } class Truck extends Vehicle { @override void stop() { print('Truck is stopping'); } } void main() { Truck myTruck = Truck(); myTruck.stop(); // 出力: Truck is stopping }
この例では、Truck
クラスが親クラス Vehicle
を継承し、その stop
メソッドをオーバーライドしています。
@override とクラス継承の違い
ここで間違えやすいのが、クラス継承 (extends
) とメソッドのオーバーライド (@override
) の違いです。
-
クラス継承 (
extends
)- 子クラスが親クラスの機能をそのまま引き継ぎます。
extends
を使うことで、親クラスのメソッドやプロパティを使用できます。
-
メソッドのオーバーライド (
@override
)- 親クラスのメソッドの動作を子クラスで変更できます。
- 変更する際に
@override
を使って明示するのがベストプラクティスです。
まとめ
-
@override
アノテーションの目的- 親クラスのメソッドをオーバーライドしていることを明示する。
- コードのミスを防ぎ、可読性を向上させる。
-
クラスの継承 (
extends
) と @override の違い- 継承は親クラスの機能をそのまま使う。
- @override はその機能を上書きする。