클래스 변수와 인스턴스 변수

2024. 3. 16. 23:43정보처리,전산

반응형

 

클래스 변수와 인스턴스 변수는 객체 지향 프로그래밍에서 중요한 개념이다. 이 둘은 서로 다른 범위에서 사용되며 다른 목적으로 사용된다.

- 클래스 변수(Class Variable):
   - 클래스 변수는 해당 클래스의 모든 인스턴스들이 공유하는 변수이다.
   - 클래스 변수는 한 번 정의되면 모든 인스턴스에 의해 공유되며, 클래스 이름을 통해 접근된다.
   - 클래스 변수는 보통 어떤 클래스의 모든 인스턴스가 공유해야 하는 공통적인 상태나 속성을 나타내는 데 사용된다.

   - 클래스 변수는 클래스 내부에 선언되고, static 키워드로 정의된다.

 

 

클래스 변수(class variable)는 클래스의 모든 인스턴스가 공유하며, 한 번 정의되면 모든 인스턴스가 동일한 값을 공유한다.

public class Student {
    // 클래스 변수
    static int numberOfStudents = 0;

    // 인스턴스 변수
    String name;
    int age;

    // 생성자
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
        numberOfStudents++; // 클래스 변수 값 증가
    }

    // 학생 수를 출력하는 메서드
    public static void printNumberOfStudents() {
        System.out.println("학생 수: " + numberOfStudents);
    }

    public static void main(String[] args) {
        // Student 클래스의 인스턴스(객체)를 생성한다.
        Student student1 = new Student("철수", 20);
        Student student2 = new Student("영희", 21);

        // 클래스 변수를 출력한다.
        Student.printNumberOfStudents();  // 출력: 학생 수: 2
    }
}




numberOfStudents는 클래스 변수로서, 모든 학생들이 공유하는 학생 수를 나타낸다. Student 클래스의 각 인스턴스가 생성될 때마다 numberOfStudents 값이 증가되어야 하므로, 생성자에서 해당 값을 증가시켜준다.

클래스 변수를 사용하면 해당 클래스의 모든 인스턴스들이 동일한 값을 공유할 수 있고, 클래스의 상태를 나타내는 데 유용하다.

 

 

 

 

 

 

 


- 인스턴스 변수(Instance Variable):
   - 인스턴스 변수는 각각의 인스턴스마다 별도로 존재하는 변수이다.
   - 인스턴스 변수는 각 인스턴스마다 고유한 값을 가질 수 있다.
   - 인스턴스 변수는 해당 클래스의 객체(인스턴스)가 생성될 때마다 메모리에 할당되며, 인스턴스의 상태를 나타내는 데 사용된다.

 

 

인스턴스(instance)는 객체 지향 프로그래밍(OOP)에서 클래스의 실제 객체를 의미한다. 클래스는 객체를 만들기 위한 틀이며, 이 틀을 이용하여 실제 데이터를 가지고 있는 객체를 생성할 수 있다.
객체들이 클래스를 기반으로 만들어진 것이며, 이 객체들을 인스턴스라고 한다.


public class Car {
    String model;  // 모델명을 나타내는 인스턴스 변수

    // 생성자 메서드
    public Car(String model) {
        this.model = model;
    }

    // 속도를 출력하는 메서드
    public void printSpeed(int speed) {
        System.out.println("속도: " + speed);
    }

    public static void main(String[] args) {
        // Car 클래스의 인스턴스(객체)를 생성한다.
        Car myCar = new Car("코나");

        // 생성된 인스턴스의 메서드를 호출한다.
        myCar.printSpeed(100);
    }
}



Car 클래스를 정의하고, main 메서드에서 Car 클래스의 인스턴스를 생성하여 사용한다. 이때, myCar 변수는 Car 클래스의 인스턴스를 가리키는 참조이다. 따라서 이러한 인스턴스는 클래스를 기반으로 생성되었으며, 클래스에서 정의된 속성과 메서드를 사용할 수 있다.

 

 

 

 
반응형