Java static, this

1386 ワード

生活コードの講義整理

class Foo{
	public static String classVar = "I class var";
	public String instanceVar = "I instance var";
	
	public static void classMethod() {
		System.out.println(classVar); // 가능
	//	System.out.println(instanceVar); // 불가
	}
	
	public void classMethod2() {
		System.out.println(classVar); // 가능
	//	System.out.println(instanceVar); // 가능
	}
	
}


public class StaticApp {

	public static void main(String[] args) {
		System.out.println(Foo.classVar); // 가능
	//	System.out.println(Foo.instanceVar); // 불가
		
		Foo.classMethod(); // 가능
	//	Foo.classMethod2(); // 불가
		
		Foo f1 = new Foo();
		Foo f2 = new Foo();
		
		System.out.println(f1.classVar); // classVar
		System.out.println(f1.instanceVar); // instanceVar
		
		f1.classVar = "changed by f1";
		System.out.println(Foo.classVar); // changed by f1
		System.out.println(f2.classVar);  // changed by f1
		
		f1.instanceVar = "changed by f1";
		System.out.println(f1.instanceVar); // changed by f1
		System.out.println(f2.instanceVar); // instanceVar
	}

}

  • クラスメソッドがインスタンス変数にアクセスできない理由
  • 静的はクラスの一部であり、クラスがインスタンス変数instanceValにアクセスする場合は、どのインスタンスのinstanceValなのかを知らないため、知らない必要があります.
  • this : 클래스가 인스턴스화 되었을 때에 인스턴스를 가리키는 특수한 이름