• ベストアンサー

オブジェクトを作らずクラスのままで使用しても良い?

クラスのインスタンスを一つしか作らない場合、 そのクラスをクラスのままインスタンス化せずに使うのは推奨されませんか? 理由も合わせてお願いします。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • ok_mnb
  • ベストアンサー率60% (3/5)
回答No.1

クラスは型ですのでクラスのままで(インスタンス化せずに)使用することはできません。 クラスのままで使用するとは、static修飾子(静的クラス)を使用するか、ということでしょうか? 少しずれるかもしれませんが「static修飾子」については 下記で議論されていますのでご参照ください。

参考URL:
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=12&topic=26905
bajiriko
質問者

お礼

大変参考になりました。 ありがとうございました。 インスタンス化せずにアクセスしたいが為や メモリ節約の為(携帯では裏技として可) などの理由ではstaticにすべきでないのですね。 現時点ではstatic領域へのアクセス速度も優位性無いみたいですね。 static以外で解決できない時にstatic使用し、 一度しか、作らない時でもsingletonとして作るように心掛けます。

bajiriko
質問者

補足

その通りです。 一つしか、インスタンスを作らないクラスなら、 static classとして使うのは推奨されるか? という事です。

関連するQ&A

  • クラス?オブジェクト?インスタンス?何がなんだか・

    一般的なオブジェクト指向の 定義として下記で合っているのでしょうか お願いします クラス:第2実体(人間) インスタンス:第1実体(例:山田) オブジェクト:色々なインスタンスをさして、抽象的に総称としてオブジェクト 例えば・・クラス:人間、インスタンス:山田 クラス:犬、インスタンス:ゴン 違うクラスのインスタンスをまとめて呼ぶ際にオブジェクト? よく分からなくなっています、よろしくお願いします

  • クラス、オブジェクト、インスタンス、メソッドについて。

    クラス、オブジェクト、インスタンス、メソッドに ついて教えていただけないでしょうか? 今現在の自分の認識では、乗り物を例にすると、 「乗り物」という大枠がクラス。それを、たとえば 飛行機なり電車なり船なり、より具体的にした ものがインスタンス=オブジェクト。 その具体化したものの挙動、動作(走るとか飛ぶとか) がメソッド、という理解です。 ただ、これだとオブジェクトとインスタンスを 同じものとして見てしまっているので、この2つの 違いを明確に説明しろと言われると困ってしまいます。 インスタンスとオブジェクトの違いを明確にした上で うまく伝えられる方法があれば、ご教授ください。

  • ラッパークラスのオブジェクト作成について教えてください。

    ラッパークラスのオブジェクト作成について教えてください。 ラッパークラスのオブジェクト作成には ・new演算子を使ってインスタンス化する方法 ・ラッパークラスのstaticメソッドを呼び出す方法 の2つの方法があると書籍に書いてありました。(SJC-Pのテキストです) では Integer i = 1000; のような記述はどうでしょうか? Integerはintのラッパークラスと思うのですが、iはインスタンスじゃないという事でしょうか?

    • ベストアンサー
    • Java
  • 内部クラスのインスタンスを外部クラスが保持する場合

    C++での内部クラスの宣言の仕方なのですが、例えば、 class Outer { private:    class Inner; public:    Outer();    ~Outer(); }; class Outer::Inner { public:    Inner();    ~Inner(); }; のように単純に内部クラスが宣言されているだけならば、 その具体的な定義を外側に書くことは可能と思うのですが、 class Outer { private:    class Inner    {    public:       Inner();       ~Inner();    }; public:    Outer();    ~Outer();    Inner inner; //内部クラスのインスタンス }; のように外部クラスが内部クラスのインスタンスを保持していた場合には、 上記のようにインスタンス作成より上で外部クラスの宣言内に内部クラスの定義を書かないと、 コンパイルが通らない(VC++2008)と思います。具体的な中身がないままインスタンスを 作っているのでエラーを吐く理由もわからないでもないですが、 見易さ的に上の例のようにかけないのかなとも思ったりします。 インスタンスを外部クラスに持たせずともどうとでもなるのですが、 あえて上のようなことをしたくなった場合には下のような方法で記述する以外ないのでしょうか?

  • クラス、インスタンス、オブジェクトの区別

    クラスが人間という種類だとしたら インスタンスが例えばAさん、Bさんという具体的な人のことで、 オブジェクトが誰でもいいけどとりあえず具体的な誰か という認識でいいでしょうか? だとしたらなんとなくイメージはできたのですが、もっとわかりやすい言葉が欲しいです。 どなたから説明してもらえませんか?

    • ベストアンサー
    • Java
  • 何のクラスでしょうか

    クラスの勉強をしています。 インスタンスがクラスを実体化したことまでは理解しましたが、 アプリケーション単位にインスタンスハンドルを持っているの意味が分かりません。 アプリケーションとは何のクラスを実体化したものなのでしょうか?

  • オブジェクト生成時のセオリーについて

    オブジェクト指向を採用しているプログラミング言語において、ほとんどの場合、オブジェクト生成時に使用されるコンストラクタは返り値を持てません。 また、コンストラクタにて例外を投げるといったことは推奨されていないケースが多いです。 そんな中で、コンストラクタに何らかの引数を渡してインスタンスを生成するクラスの場合、不十分な引数を渡すことで使用できない状態となるインスタンスが生成されることがあります。 こういったことを踏まえて、渡される引数が適しているものであることを確認する役割というのは使用されるクラス自身が担うのか、クラスを生成する外部の処理(ファクトリー的なクラス・メソッド)が担うのか、どちらが一般的なセオリーなんでしょうか? 無論、不十分なインスタンスが誤って使用されないようにメソッドにエラー処理をかけ、「使用できない状態のオブジェクトである」ことを通知するのは当然なのでしょう。 ただ、最近知り合いから「クラスはできるだけ不変な状態を保つよう設計した方がいい。そのほうが使いやすく、再利用時のバグが減る」という話を聞いて状態を持たないクラスの設計というのを考えこんでしまい、悩んでいます。 わかりにくい質問かもしれませんが、回答よろしくお願いします。

  • クラスオブジェクトの参考書

    標準モジュールやイベントについての参考書は 山ほどあるのですが、クラスモジュールについての 参考書がなく困っています。 クラスについての概念、インスタンスの作成の意味、そして 標準モジュールとの違いなどが解るお勧めの参考書を 教えて頂きたいです。 詳しい本でしたら、Excel・Accessとはず、そして バージョン2003以上でしたらOfficeソフトを持っています。 私個人のレベルは、仕事上小規模の基幹系システムを作成しています。 資格は、ACCESS・ExcelともVBAのStandardを持っています。 勝手なご質問ですが、ご存知の方おられましたらよろしく お願いします。

  • FlashAS3でのカスタムクラスについて質問です。

    FlashAS3でカスタムクラスを作りたいのですが、 stage上に置いたインスタンスを指定するにはどうしたら良いでしょうか。 例えばtest_mcというインスタンスがステージにあるとして ドキュメントクラスではそのままtest_mcが使えますが、 カスタムクラスで使うにはどうしたら良いかわかりません。

    • ベストアンサー
    • Flash
  • インスタンスとオブジェクト

    こんばんは。 変数について教えて下さい。 プログラム自体が初めてなので 「たのしい Ruby 第3版」を読んでいます。 ずっとインスタンスとオブジェクトの違いが曖昧なままです。 その本の「クラスとモジュール」という章にて クラスを定義する構文。 インスタンス変数とローカル変数の違いですが、 以下の説明で一部理解できずにつまずいています。 ―――――――――――― @ で始まる変数は インスタンス変数 といいます。 ローカル変数はメソッドごとに異なる変数として扱われますが、 インスタンス変数は同じインスタンス内であれば、 メソッド定義を超えてその値を参照したり、変更したりできます。 なお、初期化されていないインスタンス変数を参照すると nil が得られます。 インスタンス変数は、インスタンスごとに違う値を持つことができます。 またインスタンス変数は、 インスタンスがある間は値を保持しておいて 何度でも利用することができます。 一方、ローカル変数はメソッド呼び出しごとに新しく割り当てられるため、 メソッドから抜けると値を忘れてしまいます。 ―――――――――――― ここで分からないのは、 ・ローカル変数が "メソッドごと" に異なる変数として扱われる ・インスタンス変数は同じ "インスタンス内" であれば、 メソッド定義を超えてその値を参照したり、変更したりできます の部分です。 Webで検索してますが、 プログラミング経験ありを前提で書かれているような。 他の言語も知らないので分からない、そんなページが多いです。 人に聞くからには 自分でも頑張って理解できるように考えますので、 どうか回答よろしくお願いします。

    • ベストアンサー
    • Ruby