未分類

クラス変数、クラスメソッド

投稿日:

     

これまでのコードは、クラス内のメンバ(フィールドとメソッド)は、オブジェクトが作成されたときに、はじめて値を格納したり呼び出したりすることができました。

オブジェクトを作成することによって、キャラクターの属性や体力量といった値を代入したり、出力したりすることができました。

このことを、フィールドzokusei・tairyokuは

オブジェクトに関連づけられている

ということもあります。

各オブジェクトに関連づけられているフィールドをインスタンス変数、メソッドをインスタンスメソッドといいます。

クラス変数とクラスメソッド

クラスでは、オブジェクトに関連づけられていないメンバを持つことができます。これを、

クラス全体に関連づけられている

ということがあります。関連づけられているフィールドをクラス変数、メソッドをクラスメソッドといいます。

クラス変数・クラスメソッドの、宣言、定義するときにstaticという修飾子をつけることになっています。

クラス変数は0で初期化されています。「キャラクター」オブジェクトが作成されるたびに、「sum++;」が処理され値が増えていくのです。つまり、sumは、

クラス全体で何人のキャラクター(いくつのオブジェクト)が存在しているか

を表すフィールドです。このように、クラス全体で扱うデータを格納しておくフィールドがクラス変数です。

クラスメソッドであるshowSum()メソッドの定義です。

クラスメソッドは、

そのクラスからオブジェクトが作成されていなくても、メソッドを呼び出すことができるのです。

インスタンスメソッドのようにオブジェクトに関連づけられていないので、下記のように呼び出します。

Character.showSum(); //クラス名をつけて呼び出す

sumの値は最初は0ですがオブジェクトが作成された後「sum++;」により、1になっていることが確認できます。

クラスメソッドについての注意

以前クラス内のメンバに「this.」という指定をつけることができることを説明しました。

実は「this.」はインスタンスメソッドの中でのみ使用可能です。

クラスメソッドは特定のオブジェクトに関連づけられていないので、特定のオブジェクト自身を表す「this.」は使用不可となるのです。つまり、下記のようなコードは誤りです。

さらに、クラスメソッド内では、インスタンス変数・インスタンスメソッドにアクセスできません。クラスメソッドは、特定のオブジェクトに関連づけられていないためです。

つまり、下記のようなコードは誤りです。

コンストラクタの定義も、クラスには欠かせない機能です。クラス変数・クラスメソッドの特徴も理解しておきましょう。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サンプルイメージ

コンストラクタのしくみ

                 クラスの中には、フィールドとメソッドのほかに、コンストラクタと呼ばれるものを記述することができます。 コンストラクタは、メソッドに大変よく似ています。しかし、コンスト …

サンプルイメージ

for文のしくみを知る

激レアキャラをゲットするまでは・・・→レアガチャを引き続ける 私たちの生活に朝起きる、歯を磨く、朝食を食べる、学校に行く・・・といった「繰り返し処理」を行っています。 Javaでは、このような繰り返し …

サンプルイメージ

メソッドの引数

メソッドでさらに柔軟な処理を行うことができます。メソッドを呼び出す際に、 呼び出し元からメソッド内に何か情報(値)を渡し、その値に応じた処理を行う ということができます。メソッドに渡す情報を引数といい …

サンプルイメージ

画面への出力

前回画面に文字列を出力するコードを学習しました。「System.out.println・・・」という言葉に注目してください。この「System.out」とは、 標準出力(standard output …

サンプルイメージ

式と演算子

式のしくみを知る Javaの「式」の多くは、 演算子(演算するもの)とオペランド(演算の対象) を組み合わせてつくられています。たとえば、「1 + 2」の場合は、「+」が演算子、「1」と「2 …