【Flutter】入門!Dart基本「Inheritance、try~catch」
Inheritance
DartにおけるInheritance(継承)は、クラスが他のクラスの特性や振る舞いを継承する仕組みを指します。これにより、既存のクラスをベースにして新しいクラスを作成し、コードの再利用性や階層構造の構築が可能になります。Dartでは、単一継承(single inheritance)のみがサポートされています。これは、各クラスが1つの親クラスしか持てないことを意味します。
// 親クラス(基底クラス)
class Animal {
String name;
Animal(this.name);
void eat() {
print('$name is eating.');
}
}
// 子クラス(派生クラス)
class Dog extends Animal {
String breed;
// 親クラスのコンストラクタを呼び出す
Dog(String name, this.breed) : super(name);
// 子クラス独自のメソッド
void bark() {
print('$name is barking.');
}
}
void main() {
// 子クラスのインスタンスを作成
var myDog = Dog('Buddy', 'Golden Retriever');
// 親クラスのメソッドを呼び出す
myDog.eat();
// 子クラス独自のメソッドを呼び出す
myDog.bark();
}
この例では、Animalクラスがnameとeatメソッドを持ち、DogクラスがAnimalクラスを継承しています。Dogクラスはさらにbreedという独自のフィールドを持ち、barkという独自のメソッドを追加しています。
継承を使用することで、DogクラスはAnimalクラスのすべての特性を利用でき、さらに独自の特性を追加することができます。これにより、コードの再利用が促進され、クラス階層が構築されることで、プログラムの構造がより柔軟になります。
try~catch
Dartのtryとcatchは、エラーが発生する可能性のあるコードを安全に実行し、エラーが発生した場合に対処するための構文です。基本的な構造は以下の通りです
try {
// エラーが発生する可能性のあるコード
} catch (error) {
// エラーが発生した場合の処理
} finally {
// どちらにしろ実行される処理
}
- tryブロック: エラーが発生する可能性のあるコードを含むブロックです。この中でエラーが発生すると、制御がcatchブロックに移ります。
- catchブロック: エラーが発生した場合に実行されるブロックです。エラーオブジェクトがerrorとして提供され、このオブジェクトを使用してエラーに関する情報を取得できます。
- finallyブロック: エラーが発生してもしなくても、どちらにしろ実行されるブロックです。通常はクリーンアップやリソースの解放などに使用されます。
void main() {
try {
// エラーが発生する可能性のあるコード
var result = 10 ~/ 0; // ゼロで割り算を試みる
print('Result: $result'); // この行は実行されません
} catch (e) {
// エラーが発生した場合の処理
print('Error: $e'); // エラーメッセージを出力
} finally {
// どちらにしろ実行される処理
print('Finally block executed');
}
}
この例では、ゼロで割り算を試みています。この操作はエラーを引き起こし、catchブロックが実行されます。結果として'Error: IntegerDivisionByZeroException'というエラーメッセージが出力されます。finallyブロックも実行され、'Finally block executed'というメッセージが出力されます。
catchブロックでは、キャッチしたエラーに対する特定の処理やエラーメッセージのログなどを行うことができます。finallyブロックはエラーが発生しても発生しなくても、どちらの場合でも実行されるため、後処理やクリーンアップに利用されます。
Discussion