トップページtech
18コメント4KB

オブジェクト指向におけるstaticメソッドの意義

■ このスレッドは過去ログ倉庫に格納されています
0001デニス・リッチー・サンボラNGNG
オブジェクト指向のオブジェクトの状態にとらわれない
staticメソッド。コンストラクタのオーバーヘッド
が無い分、パフォーマンスに優れる一方、使いすぎると
只の手続き型プログラミングと化してしまう罠。static
メソッドは名前空間付の手続き型言語の関数に他ならない。

Javaの設計でもジェネリックプログラミングを忠実
に実践したArraysの作りを見る分には使い方次第では
支持している模様。また、Stringなどの不変クラスを
扱うメソッドはstaticメソッドを使うのが自然だろう。

今だから語ろうじゃないか、staticメソッドを。
0002デフォルトの名無しさんNGNG


   === 終了 ===
0003デフォルトの名無しさんNGNG


 ま た O O 厨 か
 
 
ということにしたいのです
0004デフォルトの名無しさんNGNG
重複スレッドにつき以下へどうぞ。

***すれ立てるまでもない質問はここで 第35刷***
http://pc2.2ch.net/test/read.cgi/tech/1050078087/l50
0005うんこNGNG
ウィンドウズのコールバック関数の封殺によくつかう。
0006デフォルトの名無しさんNGNG
>>1
早く就職してどっかいけ

終了
0007デフォルトの名無しさんNGNG
>>1
Stringでstaticで扱う必要のないメソッドまでstaticにしてどこが便利なのか。

0008デフォルトの名無しさんNGNG

「1はstaticとfinalを混同しているし、そのどちらもまともに理解していない」
0009デフォルトの名無しさんNGNG
>>8
finalか。
staticとstatic finalとを混同しているかもな。
不変クラスの意味もわかっていなさそうだ。
StringBufferといえばすぐにわかるかな
0010デフォルトの名無しさんNGNG
さっぱり分からん、VB厨の漏れにも分かるように説明してみろ
0011デフォルトの名無しさんNGNG
StringBufferは可変

Stringは不変
つまり返り血なしなvoidなメソッドだけで
オブジェクトの中身を変更することができないってこった。
一旦Stringで返り血を出して新しいオブジェクトに入れないとStringオブジェクトの中身を
変えることができないって凝った。
0012デフォルトの名無しさんNGNG
微妙に、いやかなり日本語が変
0013デフォルトの名無しさんNGNG
不変といえばIntegerもLongもDoubleもShortもByteもCharactorもFloatもBooleanも
BigIntegerもBigDecimalも不変

StringBuffer以外に可変といえばVectorとかArrayListとか
0014デフォルトの名無しさんNGNG
不変オブジェクトっていうのは
コンストラクタとデストラクタ以外では、メンバの値を変更できないオブジェクトのこと。
こんなの
class HUHEN {
private:
    const int m1;
    const char* const m2;
public:
    HUHEN( int i, const char* a ) : m1(i), m2( a ) {
    }
    ~HUHEN();
    int GetM1() const { return m1; }
    const char* GetM2() const { return m2; }
}
0015デフォルトの名無しさんNGNG
Javaの理論と実践: 可変性か、不変性か?
http://www-6.ibm.com/jp/developerworks/java/030418/j_j-jtp02183.html
0016デフォルトの名無しさんNGNG
俺も、String変換メソッドはstaticにしてる。

Stringをラップやら継承してたら使い難いだろ。
0017デフォルトの名無しさんNGNG
関係ないけど、メソッドの実装を考えるときはスレッドセーフ、
割り込みセーフを意識したほうがいい。必ずしもセーフである
必要はないけど。
0018デフォルトの名無しさんNGNG
本当に関係ないですねぇ :-P
■ このスレッドは過去ログ倉庫に格納されています