[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] 抽象クラス(was Re: staticの使い方(メソッド))
前橋です。
西沢さん:
>気持ちはわからないでもないですが、どのクラスでも使うメソッドや
>変数なら抽象クラスに実装する方がスマートですね。
>
>ex.
>クラスメソッドの場合 => int c = MyClass.calc(a, b);
>抽象クラスに実装済みの場合 => int c = calc(a, b)
>
>ちょっと強引な例ですがクラス名を書かなくて済みます。
あのー、これはもしかして、そういう抽象クラスを継承するという
ことでしょうか?
もしそうでなかったらごめんなさい。以下、上記の前提で話を進め
ますが、
単一継承しか許していないJavaで、「よく使う」という理由だけで
継承を使っちゃったら困りませんか? 継承はやっぱり、is aの関係
があるときだけにしないと...
読書会には出ていませんが、Peter Coadの「Javaオブジェクト設計」
の「継承のチェックポイント」にも、
4.ユーティリティクラス(何度も利用したい便利な機能を持つクラ
ス)に過ぎないクラスをサブクラス化するのではない。
と書いてありますし...
似た話で、Cでいうところの#defineをJavaで書きたいとき、整数型
ならstatic final int を使うわけですが、たいていこういうのは、
あっちこっちで参照するので、それだけ固めたinterfaceを作ると
いう技があります。
interface Constants {
static final int HOGE = 1;
static final int PIYO = 2;
...
}
で、これを使うときですが、
使う側のクラスで、Constantsをimplementsしてしまえば、いちい
ち Constants.HOGE のように書かなくて済みます。これはインタフェー
スなので、単一継承に縛られる必要もありません。
でも、これって、私はとっても裏技チックのような気がするのです
けど、みなさんどうお考えでしょう?
------------------------------------------------------------
前橋 和弥 maebashi@xxxxxxxxxx
中部ソフトエンジニアリング(株)
〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------