[Dart理解度テスト008]@override アノテーションの目的は何ですか?

このページには広告が含まれる場合があります。

 

問題

@override アノテーションの目的は何ですか?

  1. 変数を最終的な値に設定することを示すため
  2. メソッドをオーバーライドしていることを明示するため
  3. クラスを継承していることを示すため
  4. 非同期処理であることを示すため

正解と解説動画

←「+」をクリックしてください

正解

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
}

この例では、親クラス Vehiclemove メソッドを子クラス 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) の違いです。

  1. クラス継承 (extends)

    • 子クラスが親クラスの機能をそのまま引き継ぎます。
    • extends を使うことで、親クラスのメソッドやプロパティを使用できます。
  2. メソッドのオーバーライド (@override)

    • 親クラスのメソッドの動作を子クラスで変更できます。
    • 変更する際に @override を使って明示するのがベストプラクティスです。

 

まとめ

  • @override アノテーションの目的

    • 親クラスのメソッドをオーバーライドしていることを明示する。
    • コードのミスを防ぎ、可読性を向上させる。
  • クラスの継承 (extends) と @override の違い

    • 継承は親クラスの機能をそのまま使う。
    • @override はその機能を上書きする。

こんな記事も読まれています

今すぐ無料お試しキットを受け取る

はじめての方へ


みんプロ式プログラミング講座体系・ラインナップ
みんプロ式プログラミング講座受講の流れ(割引特典利用方法)
サイトマップ(みんプロHPコンテンツ一覧)
運営会社概要

みんプロ作成アプリ





今すぐ無料お試しキットを受け取る
TOP