언어 ⏎/java

인스턴스 멤버와 정적 멤버

LeeDiculous 2022. 12. 29. 15:35

인스턴스 멤버는 객체마다 가지고 있는 멤버를 말하고, 정적 멤버는 클래스에 위치시키고 객체들이 공유하는 멤버를 말합니다.

인스턴스 멤버와 this

인스턴스 멤머란 객체를 생성한 후 사용할 수 있는 필드와 메소드를 말하는데, 이들을 각각 인스턴스 필드, 인스턴스 메소드라고 합니다.

객체 내부에서 인스턴스 멤버에 접근하기 위해 this를 사용할 수 있습니다.

this.model은 자신이 가지고 있는 model 필드라는 뜻입니다. this는 주로 생성자와 메소드의 매개 변수 이름이 필드와 동일한 경우 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할 때 사용됩니다.

정적 멤버와 static

정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말합니다. 이들을 각각 정적 필드, 정적 메소드라고 부릅니다.

정적 필드와 정적 메소드를 선언하려면 필드와 메소드 선언 시 static 키워드를 추가적으로 붙이면 됩니다.

public class student {
    static String name;
    static int age;

    public static List<String> students() {
        return students();
    }

정적 필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스(바이트 코드)를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리됩니다. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있습니다.

객체가 없어도 실행된다는 특징 때문에 정적 메소드를 선언할 때는 이들 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없습니다. 또한 this 키워드도 사용이 불가합니다.