//Member_04.java class Member_04 { //クラス変数 static String classValue = "クラス変数"; //インスタンス変数 int no; String name; //コンストラクタ Member_04(int no, String name){ this.no = no; this.name = name; } //クラス変数の表示 static void printClassValue(){ System.out.println("クラス変数 classValue = " + classValue); } //インスタンスからのクラス変数変更 void changeClassValue(){ classValue = no + ". " + name + " による変更"; } }
//Driver_04.java class Driver_04{ public static void main(String[] args){ //インスタンス化 Member_04 shiz = new Member_04(1, "館石静乃"); Member_04 maya = new Member_04(2, "桜井真夜"); Member_04 tema = new Member_04(3, "安堂てまり"); System.out.println("\nインスタンスからクラス変数へのアクセス\n"); Member_04.printClassValue(); shiz.changeClassValue(); Member_04.printClassValue(); maya.changeClassValue(); Member_04.printClassValue(); tema.changeClassValue(); Member_04.printClassValue(); } }
>javac -encoding UTF-8 Driver_04.java >java Driver_04 インスタンスからクラス変数へのアクセス クラス変数 classValue = クラス変数 クラス変数 classValue = 1. 館石静乃 による変更 クラス変数 classValue = 2. 桜井真夜 による変更 クラス変数 classValue = 3. 安堂てまり による変更
//Member_06.java class Member_06 { //クラス変数 static String classValue = "クラス変数"; //インスタンス変数 int no; String name; //コンストラクタ Member_06(int no, String name){ this.no = no; this.name = name; } //クラスからインスタンス変数を参照 NG static void printThisName(){ System.out.println(this.name); } //インスタンスからのクラス変数を参照 OK void changeClassValue(){ classValue = no + ". " + name + " による変更"; } }
//Driver_06.java class Driver_06{ public static void main(String[] args){ //インスタンス化 Member_06 shiz = new Member_06(1, "館石静乃"); System.out.println("\nクラスからインスタンス変数へのアクセス\n"); Member_06.printThisName();//NG } }
>javac -encoding UTF-8 Driver_06.java .\Member_06.java:19: エラー: staticでない変数 thisを staticコンテキストから参照することはできません System.out.println(this.name); ^ エラー1個