JAVA入門⑥ クラスとインスタンス 簡単JAVA説明⑮ 前回の復習 1.クラス クラスの生成 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 型名 クラス変数名; } クラスメソッドの構文 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("Noは" + no); 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; などとしてしまったら・・・ そのような場合を避ける方法がJAVAにはあります。 クラスの外から勝手にアクセスできないようなメンバと しておくことができます。これを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メンバですと、クラスの外からアクセスできませ んが、 publicメンバとした場合、外からのアクセス が可能となります。 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 ) privateとpubblicは修飾子と呼ばれています。 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であることがわかります。
© Copyright 2024 ExpyDoc