【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part14 クラス
「基礎 から 学ぶ Flutter 」という書籍で 学習 したことを ブログでアウトプットしていこうと思います。今回は Dart編 ( part14 )です。
前回
【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part13 クラス
引き続きクラスの学習になります。
クラス
Abstract
DartではたしかPythonもありませんでしたよね。interface
というものは存在しません。
Pythonではダックタイピングという面白い手法(?)で実装を行います。
Dart言語も同様ということでしょうか。
※interface
というキーワードが存在しないだけでインターフェイスという機能自体は「暗黙的インターフェイス」というかたちで実現されていました。
Abstractの使い方はJavaと同様のようです。
Abstractクラスをインスタンス化することはできません。(Abstractというのは「抽象」という意味を持ちます。)
Abstractクラスは「継承してもらう」ことでその効果を発揮する特別なクラスです。
Abstractメソッドを定義できます。
このメソッドを定義すると継承したクラスは「絶対に」このメソッドを実装する必要があります。
abstract class AbstractHogeClass {
// ただのメソッドに見えますが、これがAbstractメソッドです。
// Abstractメソッドは実装を持つことができません。セミコロンで止めます。
void fuga();
// 「実装」を持つメソッドは「普通ののメソッド」と判断されます。
// 継承先のクラスは実装を強制されません。
void fufufu() {
print ('fufufu');
}
}
// AbstractHogeClassを継承しました。
// fugaは絶対に実装しなければいけません。(未実装の場合はコンパイルエラーです。)
class HogeImplemetsClass extends AbstractHogeClass {
void fuga() {
print('絶対実装しないと!');
}
}
void main() {
// Abstractクラスはインスタンス化できません。
// 実装を持たないメソッドが定義されることがあるのでできません。
//var a = AbstractHogeClass();
var b = HogeImplemetsClass();
b.fuga();
}
最後に
Abstractクラスはポリモーフィズムを守るための大切な機能だと思っています。
「このクラスを継承しているなら必ずこのメソッドは使える!」という安心感もありますよね。
今日はここまで!
ディスカッション
コメント一覧
まだ、コメントがありません