2

ここSOで何度も回答されていることは知っていますが、クラスをインスタンス化することが正確に何を意味するのか、まだ理解できていません。私はこれを読んで、理解に役立ちました。

そのクラスにはインスタンス変数がないため、静的クラス like は式 likeConsoleでは使用できないことを知っています。また、静的クラスは「ジェネリック」メソッドを提供し、一般に関数に使用されることも知っています。クラスをインスタンス化すると、クラス内のメソッドにアクセスできるようになることを私は知っています。newConsole c = new Console()MathDouble d = new Double();Double

私はこれらの事実を知っていますが、それらが実際に何を意味するのかを本当に理解していないように感じます. 静的クラスが絶対に必要な場所と、クラスのインスタンスを作成することが絶対に必要な場所の例を誰かが挙げてもらえますか?

4

3 に答える 3

15

クラスは一連の設計図のようなものだと考えてください。クラスをインスタンス化することは、設計図を取得してアイテムを構築するようなものです。エンジニアが車を設計するとき、彼は設計を考え出します。それがクラスになります。車が設計された後、計画は組み立てラインに渡され、組み立てられます。ラインから転がり落ちる各車は、そのデザインのインスタンスになります。

車がまだ設計段階にあるときは、実際には何もできません。車がないとドアが開けられません。車のインスタンスを取得したら、それを操作できます。ドアを開けたり、エンジンを始動したりできます。同じことが のようなクラスにも当てはまりDoubleます。インスタンスを取得したら、それを操作できます。

のような静的クラスは、Consoleインスタンスを持たないクラスです。それらは、有用な関連機能をグループ化する方法に似ています。の場合Console、機能はコマンド ラインと対話するために使用されます。Math数学関連のコードをグループ化するために使用されます。Configuration構成ファイルの読み取り/操作に使用されます。これらのことはどれも、機能するために独自のものを作成する必要はありません。

于 2012-09-25T14:55:40.400 に答える
2

パブリック クラスは、アプリケーション内で別のクラスによって呼び出される必要があります。たとえば、これはデータ アクセスのクラス (ビジネス層によって呼び出される) である可能性があります。

静的クラスでは、トレース クラスやロギング クラスなどのインスタンスを必ずしも作成する必要はありません。

于 2012-09-25T14:55:45.873 に答える
1

静的について考えるための (おそらく) 単純化された例の 1 つを次に示します。

あなたがクラスDogを持っているなら; クラスをインスタンス化して、Dog Poodle = new Dog(); を作成できます。および犬のラブラドール = new Dog(); Dog クラスに可変の hairColor がある場合、プードルとラブラドールでは、hairColor が異なる可能性があります。2 つの異なるインスタンスは別々です。

ただし、numberOfDogs という名前の静的変数を Dog に追加し、新しい Dog がインスタンス化されるたびに変数をインクリメントした場合 (たとえば、コンストラクターでこれを行うことができます)、変数は Dog の総数をカウントし、次のようになります。チェックした Dog のインスタンスに関係なく、同じ数です。これは、使い方によっては便利 (かつ危険) です。

于 2012-09-25T15:31:43.317 に答える