第2版」を使ってJavaの研修を行っています。この本は、かなりわかりやすく書いていると考えていますが、それでもオブジェクト指向の説明に入り、「インスタンス」のあたりになると腹落ちしないことが多いようです。書籍には次のように記載されています。ここでいう「仮想世界」はJVMを意味しているものです。(P.283)抽象的な話なので、イメージをつかむためにはよいと思います。実際に使うとなると、もうちょっと具体的な説明が必要と考えています。次の方を対象としています。Javaを学習中の初心者の方。インスタンス、staticについて、学習したものの、しっくりこない方。第2版」(以下、書籍)の第II部を学習中の方。次についてJVMのメモリ上でどういった動作をするかの概要を解説し、コーディングするために理解を深めてもらうことが目的です。非static尚、次については対象外とします。loader解説1.クラスのロードクラスは、アプリケーションが使うことになったときに、JVMのメモリにロードされます。クラスのロードは、Javaが行うのでプログラマは気にしなくてよいです。}}↑のイメージ↓これだけだと、クラスをロードするだけでメンバは使えません。インスタンス化されておらず、nameもhpも定義があるだけで、メモリ上にはnameもhpも領域は確保されていないためです。2.インスタンス化では、newして使ってみます。}}↑のイメージ↓newすることで、インスタンスがJVMのメモリ上に確保されます。メンバもその中にあります。これで、nameやhpも、利用できますね。インスタンスは複数作成できます。}}↑のイメージ↓それぞれのインスタンスのメンバはメモリ上はそれぞれ別に確保されます。この例ですと、cleric1のnameは、cleric2のnameに影響しません。3.staticは?上記はstaticの説明を省いているので、staticについて説明します。staticとは「静的」と訳されます。初めから確保されていて、増やしたり減らしたりできないことです。それに対し、「動的」(dynamic)とは、任意に増やしたり減らしたりできることです。これまでの説明は、newすることでインスタンスを増やすことができる、動的なメンバ(=非staticメンバ)についての説明でした。staticのメンバは、クラスのロード時にJVMのメモリ上に確保されます。//Clericのインスタンスの数。}}↑のイメージ↓インスタンス化してもstaticのメンバは増えません。結果的に、staticのメンバは次の特徴があります。インスタンスにはに紐づかない。インスタンス化(new)しなくても使える。すべてのインスタンスで共用される。staticメソッドからは、非staticメンバは(直接は)利用できない。(サブクラスで同名の定義は可能だが、無関係。カプセル化といったクラス設計について考えると、クラスのメンバにする意味が出てきます。インスタンスにはに紐づかない。すべてのインスタンスで共用される。staticにすると、同じクラスからしかアクセスできないためこのように記載ています。インスタンスにはに紐づかない」と言っているけど、「インスタンス」.「スタティックメンバ名」というように、記載できるよ。「インスタンス」.「スタティックメンバ名」という記述もコンパイルエラーにはなりませんが、正しいとは言えません。「クラス名」.「スタティックメンバ名」とすべき。(もちろん自分のクラスであれば、クラス名部分は不要。それは今後のお勉強でのお楽しみ。ついでにインスタンスの理解は、初期につまづくポイントの1つだと思います。これを理解すれば、他のJavaに似たプログラミング言語も理解できます。インスタンスの説明としていますが、staticを理解することが、インスタンスの理解を深められると考えています。upLoginユーザーは見つかりませんでした。