Java 初級問題① クラスとインスタンス
問1
// CheckNum.java public class CheckNum()[ static String className = "CheckNum"; Boolean isEven(int num){ if(num % 2 == 0){ return true; }else{ return false; } } }
// Test.java(CheckNum.javaと同じパッケージ内にある) public class Test{ public static void main(String[] args) { CheckNum cn = new CheckNum(); cn.className += "を実行する"; System.out.println(cn.className); System.out.println(cn.isEven(15)); // falseと表示 } }
1-1.classNameの値を変更できないようにするには? 1-2.インスタンスを作らず、isEvenを使うには?
問2
public class Test1 { public static void main(String[] args) { printS(); // ←A printV(); // ←B } public static void printS(){ System.out.println("S"); } public void printV(){ System.out.println("V"); } }
2-1.AかBどちらがエラーになるか? 2-2.エラーを解消するには?2パターン答えること。
問3
public class Test1 { static String firstName = "Mike"; String lastName = "Devis"; public static void main(String[] args) { System.out.println(firstName); // ←A System.out.println(lastName); // ←B } public void printName(){ System.out.println(firstName); // ←C System.out.println(lastName); // ←D } }
3-1.エラーがでるのはどこか? 3-2.エラーの解消法は?
public class Test1 { public static void main(String[] args) { System.out.println(this.firstName); // ←A System.out.println(this.lastName); // ←B } public void printName(){ System.out.println(this.firstName); // ←C System.out.println(this.lastName); // ←D } }
3-3.エラーがでるのはどこか?(複数あり)
回答
1-1.static final String className (finalをつける。) 1-2.static Booloan isEven (staticをつけクラスメソッドにする。) クラスメソッドにすれば、CheckNum.isEven(15)で使える。 このまま使うならばnew CheckNum().isEven(15)
2-1.Bがエラーになる。(インスタンスメソッドだから。) 2-2.[1]メソッドにstaticを付けクラスメソッドにする。 もしくは[2]インスタンスを作って使う。new Test1().printV();
3-1.Bでエラー。クラスメソッド内でインスタンス変数は呼べない。 ※インスタンス変数はインスタンスを作らないと呼べない。 3-2.Test1のインスタンスを作って使う。new Test1().lastName 3-3.クラスメソッドでthisは使えない。