static을 통해 class에서 instance를 생성하지 않고도 method나 variable에 접근이 가능하다는 것을 알게 되었지만 좀 더 구체적으로 공부하고 싶어 찾아보게 되었다.
출처 :
class Foo{
public static String classVar = "I class var";
public String instanceVar = "I instance var";
public static void classMethod() {
System.out.println(classVar); // OK
// System.out.println(instanceVar); // Error
}
public void instanceMethod() {
System.out.println(classVar); //Ok
System.out.println(instanceVar); // Error
}
}
public class staticApp {
public static void matin(String[] args) {
System.out.println(Foo.classVar); // Ok
// System.out.println(Foo.instanceVar); // Error
Foo.classMethod();
// Foo.instanceMethod();
Foo f1 = new Foo();
Foo f2 = new Foo();
System.out.println(f1.classVar); // I class var
System.out.println(f1.instanceVar); // I instance var
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); // I instance var by f1
}
}