JAVA入門⑥ クラスとインスタンス
簡単JAVA説明⑮ 前回の復習 1.クラス クラスの生成 2.フィールド 3.メソッド 定義と呼び出し(引数、戻り値) 4.コンストラクタ クラスの生成 2.フィールド 3.メソッド 定義と呼び出し(引数、戻り値) 4.コンストラクタ 定義と呼び出し
簡単JAVA説明⑮ クラス変数とクラスメソッド 1.インスタンス変数とインスタンスメソッド 次に示す例では、クラスTESTに関するインスタンス(オブジェクト)を作成した 際、それぞれの、no、scoreには値の入出力が可能でした。 各インスタンス毎にフィールドの値を格納可能でした。 この場合、フィールドno、scoreは 「インスタンス(オブジェクト)に関連付けられている」 と言うことがあります。 インスタンス(オブジェクト)に関連付けられているフィールドを 「インスタンス変数」 インスタンス(オブジェクト)に関連付けられているメソッドを 「インスタンスメソッド」 と言います。
簡単JAVA説明⑮ // Testクラスのクラス class Test{ int no; double score; void show(){ System.out.println("Noは" + no); System.out.println("点数は" + score); }
簡単JAVA説明⑮ // Testクラスのインスタンス作成 class Sample1{ public static void main(String args[]){ Test test1 = new Test(); test1.no = 1; test1.score = 85; test1.show(); Test test2 = new Test(); test2.no = 2; test2.score = 75; test2.show(); }
簡単JAVA説明⑮ 2.クラス変数とクラスメソッド クラスではインスタンス(オブジェクト)に関連づ けられていないメンバを持つことができます。 これを 「クラス全体に関連づけられている」 ということがあります。 クラスに関連づけられているフィールドを 「クラス変数」 クラスに関連づけられているメソッドを 「クラスメソッド」 と言います。
簡単JAVA説明⑮ クラス変数の構文 class クラス名 { static 型名 クラス変数名; } クラスメソッドの構文 文;
簡単JAVA説明⑮ 特徴 必ず、宣言のとき、定義のとき staticという修飾子をつけます。
簡単JAVA説明⑮ // Testクラスのクラス class Test{ public static int sum = 0; private int no; private double score; public Test() { no = 0; score = 0.0; sum++; System.out.println("Noは" + no); } void show(){ System.out.println("点数は" + score);
簡単JAVA説明⑮ 5.privateとpubblic メンバへのアクセスの制限 class Test { int no; double score; void show() { System.out.println("Noは" + test.no); System.out.println("点数は" + test.score); } }
簡単JAVA説明⑮ // Testクラスのオブジェクト作成 class Sample1{ public static void main(String args[]){ Test test = new Test(); test.no = 1; test.score = 85; test.show(); } 上記のプログラムではテストNoと点数scoreに値を代入してい ます。
簡単JAVA説明⑮ もし、間違って、 test.score = -85; などとしてしまったら・・・ クラスの外から勝手にアクセスできないようなメンバと しておくことができます。これをprivateメンバと言いま す。以下のようにプログラムを書き換えます
簡単JAVA説明⑮ class Test { private int no; private double score; void show() { System.out.println("Noは" + test.no); System.out.println("点数は" + test.score); } }
簡単JAVA説明⑮ // Testクラスのオブジェクト作成 class Sample1{ public static void main(String args[]){ Test test = new Test(); test.no = 1; test.score = 85; test.show(); }
簡単JAVA説明⑮ コンパイルしてみると C:\Jsample>javac Sample1.java Sample1.java:17: no は Test で private アクセスされます。 test.no = 1; ^ Sample1.java:18: score は Test で private アクセスされます。 test.score = 85; のようなコンパイルエラーが出ます。
簡単JAVA説明⑮ publicメンバの作成 privateメンバですと、クラスの外からアクセスできませ が可能となります。 class Test { public int no; public double score; void show() System.out.println("Noは" + this.no); System.out.println("点数は" + this.score); }
簡単JAVA説明⑮ // Testクラスのオブジェクト作成 class Sample1{ public static void main(String args[]){ Test test = new Test(); test.no = 1; test.score = 85; test.show(); }
簡単JAVA説明⑮ 修飾子( privateとpubblic ) と言う意味合いです。 省略したメンバは「同じパッケージ」内に含まれ 修飾子は省略が可能です。 省略したメンバは「同じパッケージ」内に含まれ るクラス内からアクセスできます。
簡単JAVA説明⑮ 演習1.①~⑥を埋めよ。 class Person { String myName; int myAge; public void SetName(String name) { myName = name; } public String GetName() { return myName; public void SetAge(int age) { myAge = age; public int GetAge() { return myAge;
簡単JAVA説明⑮ class PersonTest { public static void main(String[] args) { ① // 田中さんインスタンスを作る ② // 田中さんの名前を設定する ③ // 田中さんの年齢を設定する ④ // 鈴木さんインスタンスを作る ⑤ // 鈴木さんの名前を設定する ⑥ // 鈴木さんの年齢を設定する System.out.println(tanaka.GetName()); System.out.println(tanaka.GetAge()); System.out.println(suzuki.GetName()); System.out.println(suzuki.GetAge()); }
簡単JAVA説明⑮ 実行結果 Tanaka 26 Suzuki 32
簡単JAVA説明⑮ 演習1 ヒント 作るべき、クラスはPersonです。 System.out.println(tanaka.GetName()); System.out.println(suzuki.GetName()); から、作成するはインスタンス名はtanakaとsuzukiであることがわかります。