static이란?

skdfjk·2022년 6월 22일
0

Java

목록 보기
1/3
post-thumbnail

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

    }
}

위의 코드를 통해 알 수 있는 것

  • static은 class의 메서드나 변수에 직접 접근하는 것을 가능하게 한다.
  • static method에서는 instance의 변수에 접근하지 못한다. static에서는 메서드에 직접 접근하는 것을 가능하게 하는데 내부의 내용에 instance의 변수가 들어간다면 직접 접근하는 것이 불가능해져 static에 맞지 않게 된다.
  • instance 변수에 접근하는 것은 금지되어 있다.
  • instance 메서드에 접근하는 것도 금지되어 있다.
  • static은 class에 소속되어 있다. instance에 있는 static 변수는 class안의 변수를 가리키고 있다. 복제하고 있으며 instance와 서로 독립적이다.
  • static을 넣지 않으면 instance에만 소속되어 있다.
  • class의 변수를 바꾸면 모든 instance의 변수의 값이 바뀐다.
  • 또 instance에서 class의 변수를 바꿀 수 있는데 이러면 모든 instance의 변수가 바뀐다.

0개의 댓글