[java] 클래스와 객체의 변수에 대해 설명해주세요.

클래스와 객체의 변수

클래스와 객체는 자바에서 객체 지향 프로그래밍의 기본 요소입니다. 변수는 이들을 구현하는 데 중요한 역할을 합니다. 이번 포스트에서는 클래스와 객체의 변수에 대해 자세히 알아보겠습니다.

클래스 변수 (Static variable)

클래스 변수는 해당 클래스의 모든 객체들이 공유하는 변수입니다. 클래스 변수는 클래스 내부에 선언되며 static 키워드를 사용하여 표시됩니다.

클래스 변수는 한 번 선언되면 클래스의 모든 객체에 의해 공유되므로, 객체가 생성되기 전에도 사용할 수 있습니다. 또한, 객체를 통하지 않고도 접근할 수 있습니다.

public class Car {
    public static int numberOfCars; // 클래스 변수

    public Car() {
        numberOfCars++; // 클래스 변수의 값 증가
    }
}

위의 예제에서 numberOfCars는 Car 클래스의 클래스 변수입니다. 모든 Car 객체에서 이 변수를 공유하며, 객체가 생성될 때마다 해당 값이 증가합니다.

인스턴스 변수 (Instance variable)

인스턴스 변수는 클래스의 개별 객체마다 별도로 유지되는 변수입니다. 클래스의 객체가 생성될 때마다 각 객체에 속하는 인스턴스 변수가 생성됩니다.

인스턴스 변수는 객체가 소멸되기 전까지 유지되므로, 객체의 상태를 유지하기 위해 사용됩니다. 인스턴스 변수를 선언할 때 static 키워드를 사용하지 않습니다.

public class Circle {
    public double radius; // 인스턴스 변수

    public Circle(double radius) {
        this.radius = radius; // 인스턴스 변수의 초기화
    }
}

위의 예제에서 radius는 Circle 클래스의 인스턴스 변수입니다. 객체마다 독립적으로 값을 가지며, 객체가 생성될 때마다 해당 값을 초기화합니다.

정리

클래스 변수는 클래스의 모든 객체에 의해 공유되며, 객체를 통하지 않고도 접근할 수 있습니다. 반면, 인스턴스 변수는 클래스의 개별 객체마다 별도로 유지되며, 객체의 상태를 유지하기 위해 사용됩니다.

클래스 변수와 인스턴스 변수의 올바른 사용은 객체 지향 프로그래밍의 핵심 원칙 중 하나인 캡슐화와 밀접한 관련이 있습니다. 적절한 변수의 범위와 접근 제어를 통해 객체를 안전하게 사용할 수 있습니다.