イライラ棒アプリ作成の件について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mmasaki@HelloNavi

イライラ棒アプリ作成の件について

#1

投稿記事 by mmasaki@HelloNavi » 12年前

 初めまして。
 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: イライラ棒アプリ作成の件について

#2

投稿記事 by hamu » 12年前

Androidがどの言語を利用しているのかを知らないのですが、一般的なオブジェクト指向言語の観点から答えさせていただきます。

>classにabstractを使用するのであれば、class内に抽象メソッドが必要かと思いますが

そんなことはありません。
抽象関数が存在しない抽象クラスも作れます。

そもそも、抽象クラスとはそれだけでインスタンスを作れないクラスです。
このプログラムにあるクラスは抽象関数を持たないため、確かにabstractが付いていなければインスタンスを生成することが可能です。

しかし、ここであえてabstractを付ける意味というのは、「このクラスは継承して使用されます。そのまま使っても意味がないです」などということを明示するということが挙げられます。

私なりの解釈ですが、参考になれば幸いです。

mmasaki_HelloNavi

Re: イライラ棒アプリ作成の件について

#3

投稿記事 by mmasaki_HelloNavi » 12年前

hamu様
回答ありがとうございました。

>しかし、ここであえてabstractを付ける意味というのは、「このクラスは継承して使用されます。そのまま使っても意味がないです」などということを明示するということが挙げられます。

一般的にはコメントを付けて分かり易くするものだと思っていましたが、このような方法もあるとのことで大変参考になりました。ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る