初めまして。
Androidのプログラムもこちらで質問してよろしかったでしょうか(もし違っていればすいません)。
Dixq様のAndroidの館「イライラ棒アプリ作成」 を参考に勉強させていただいておりますが、下記の点についてご教示願います。基本的なところで大変申し訳ありませんが、よろしくお願いいたします。
なお、過去に同様の質問があった場合はご迷惑をお掛けします。
【質問】
public abstract class Task {
public boolean onUpdate() {
return true;
}
public void onDraw(Canvas c) {
}
}
とあり、Taskのclassはabstractとなっていますが、classにabstractを使用するのであれば、class内に抽象メソッドが必要かと思いますが、当該classでは何故ないのでしょうか。単にonUpdate()等をオーバーライドするのであれば、classにわざわざabstractを宣言する必要がないと考えています。
どうしてclassにのみabstractを宣言しているのか、基本的な質問で申し訳ありませんが、ご教示願います。
イライラ棒アプリ作成の件について
-
hamu
Re: イライラ棒アプリ作成の件について
Androidがどの言語を利用しているのかを知らないのですが、一般的なオブジェクト指向言語の観点から答えさせていただきます。
>classにabstractを使用するのであれば、class内に抽象メソッドが必要かと思いますが
そんなことはありません。
抽象関数が存在しない抽象クラスも作れます。
そもそも、抽象クラスとはそれだけでインスタンスを作れないクラスです。
このプログラムにあるクラスは抽象関数を持たないため、確かにabstractが付いていなければインスタンスを生成することが可能です。
しかし、ここであえてabstractを付ける意味というのは、「このクラスは継承して使用されます。そのまま使っても意味がないです」などということを明示するということが挙げられます。
私なりの解釈ですが、参考になれば幸いです。
>classにabstractを使用するのであれば、class内に抽象メソッドが必要かと思いますが
そんなことはありません。
抽象関数が存在しない抽象クラスも作れます。
そもそも、抽象クラスとはそれだけでインスタンスを作れないクラスです。
このプログラムにあるクラスは抽象関数を持たないため、確かにabstractが付いていなければインスタンスを生成することが可能です。
しかし、ここであえてabstractを付ける意味というのは、「このクラスは継承して使用されます。そのまま使っても意味がないです」などということを明示するということが挙げられます。
私なりの解釈ですが、参考になれば幸いです。
-
mmasaki_HelloNavi
Re: イライラ棒アプリ作成の件について
hamu様
回答ありがとうございました。
>しかし、ここであえてabstractを付ける意味というのは、「このクラスは継承して使用されます。そのまま使っても意味がないです」などということを明示するということが挙げられます。
一般的にはコメントを付けて分かり易くするものだと思っていましたが、このような方法もあるとのことで大変参考になりました。ありがとうございました。
回答ありがとうございました。
>しかし、ここであえてabstractを付ける意味というのは、「このクラスは継承して使用されます。そのまま使っても意味がないです」などということを明示するということが挙げられます。
一般的にはコメントを付けて分かり易くするものだと思っていましたが、このような方法もあるとのことで大変参考になりました。ありがとうございました。