class Foo{
public static String classVar = "I class var"; // static이 붙어있는 클래스 소속 변수
public String instanceVar = "I instance var"; // static이 없는 인스턴스 소속 변수
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); //OK
}
}
public class StaticApp {
public static void main(String[] args) {
System.out.println(Foo.classVar); //OK 클래스를 통해서 클래스 변수는 접근 가능
// System.out.println(Foo.instanceVar); //Error 클래스를 통해서 인스턴스 변수는 에러!
Foo.classMethod();
// Foo.instaceMethod();
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
//
}
}
class Print{
public String delimiter = "";
public Print(String delimiter) {
this.delimiter = delimiter;
}
public void A() {
System.out.println(this.delimiter);
System.out.println("A");
System.out.println("A");
}
public void B() {
System.out.println(this.delimiter);
System.out.println("B");
System.out.println("B");
}
}
public class MyOOP {
public static void main(String[] args) {
Print p1 = new Print("----");
p1.delimiter = "****";
p1.A();
// p1.A();
// p1.B();
// p1.B();
//
// Print p2 = new Print("****");
// p2.delimiter = "----";
// p2.A();
// p2.A();
// p2.B();
// p2.B();
//
// p1.A();
// p2.A();
// p1.B();
// p2.B();
//
}
}
생성자와 this 2회 반복했지만... 전혀 1도 알아듣지 못했다... 속상해 :( 내일 다시 봐야겠다...