JAVA/포스팅

자바 클래스 멤버와 인스턴스 멤버간의 참조와 호출

짜집퍼박사(짜박) 2023. 11. 8. 09:51

자바에서 클래스 멤버와 인스턴스 멤버 간의 참조와 호출은 중요한 개념입니다. 클래스 멤버는 클래스 수준에서 정의되며 모든 인스턴스에서 공유됩니다. 인스턴스 멤버는 객체(인스턴스) 수준에서 정의되며 개별 객체마다 별도의 인스턴스를 갖습니다. 이러한 차이로 인해 멤버에 접근하고 호출하는 방식이 다릅니다.

 

1. 클래스 멤버 (Static Members)

- 클래스 멤버는 static 키워드로 정의됩니다. 예를 들어, 정적 변수(static field) 또는 정적 메서드(static method)는 클래스 멤버입니다.
- 클래스 멤버는 클래스 수준에서 존재하므로 객체(인스턴스)를 생성하지 않고도 클래스 이름을 통해 접근할 수 있습니다.
- 클래스 이름을 통해 클래스 멤버에 접근하고 호출합니다.

public class MyClass {
    static int staticVar = 42;
    static void staticMethod() {
        System.out.println("Static method");
    }
}

public class Main {
    public static void main(String[] args) {
        System.out.println(MyClass.staticVar); // 클래스 멤버에 접근
        MyClass.staticMethod(); // 클래스 멤버 호출
    }
}

 

2. 인스턴스 멤버 (Instance Members)

- 인스턴스 멤버는 클래스 내에서 static 키워드 없이 정의됩니다. 이는 일반 인스턴스 변수(instance field) 또는 인스턴스 메서드(instance method)를 의미합니다.
- 인스턴스 멤버는 객체(인스턴스)를 생성한 후에만 접근할 수 있습니다.
- 객체를 생성하고, 생성된 객체를 통해 인스턴스 멤버에 접근하고 호출합니다.

public class MyClass {
    int instanceVar = 42;
    void instanceMethod() {
        System.out.println("Instance method");
    }
}

public class Main {
    public static void main(String[] args) {
        MyClass myObject = new MyClass(); // 객체(인스턴스) 생성
        System.out.println(myObject.instanceVar); // 인스턴스 멤버에 접근
        myObject.instanceMethod(); // 인스턴스 멤버 호출
    }
}

클래스 멤버는 클래스 수준에서 공유되므로 객체를 생성하지 않고도 접근할 수 있습니다. 반면에 인스턴스 멤버는 개별 객체(인스턴스) 수준에서 존재하며, 객체를 생성한 후에만 해당 객체의 인스턴스 멤버에 접근할 수 있습니다.

또한, 클래스 멤버는 모든 인스턴스에서 공유되므로 하나의 클래스 멤버를 변경하면 모든 인스턴스에 영향을 미칩니다. 인스턴스 멤버는 객체마다 별도의 인스턴스를 갖기 때문에 각 객체의 인스턴스 멤버는 서로 독립적으로 변경할 수 있습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 오버로딩의 조건  (0) 2023.11.08
자바 오버로딩이란?  (0) 2023.11.08
자바 재귀 호출(Recursion)  (0) 2023.11.07
자바 참조형 변환타입  (0) 2023.11.07
자바 참조형 매개변수  (0) 2023.11.07