Java static, this

백엔드·2020년 10월 10일
0

자바 문법

목록 보기
1/5

생활코딩 강의 정리

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
	}

}

  • 클래스 메서드에서 인스턴스 변수에 접근하지 못하는 이유

    • static은 클래스의 소속인데 클래스가 인스턴스 변수인 instanceVar에 접근 하려면 어떤 인스턴스의 instanceVar인지 알수 있어야 하는데 모르기 때문

this : 클래스가 인스턴스화 되었을 때에 인스턴스를 가리키는 특수한 이름

profile
백엔드 개발자

0개의 댓글