[Java]클래스와 데이터
클래스, 객체, 인스턴스 정리
클래스(Class)
클래스는 객체를 생성하기 위한 ‘틀’ 또는 ‘설계도’이다. 클래스는 객체가 가져야 할 속성(변수)과 기능(메서드)를 정의한다. 예를 들어 학생이라는 클래스는 속성으로 name, age, grade
를 가진다.
- 틀: 붕어빵 틀 자체는 붕어빵이 아니다. 이렇게 생긴 붕어빵이 나왔으면 좋겠다고 만드는 틀일 뿐 실제 먹을 수 있는 것이 아니다.
이 틀을 사용해서 실제로 만들어 내는 먹을 수 있는 팥 붕어빵을 객체 또는 인스턴스라 한다.
객체(Object)
객체는 클래스에서 정의한 속성과 기능을 가진 실체이다. 객체는 서로 독립적인 상태를 가진다.
인스턴스(Instance)
인스턴스는 특정 클래스로부터 생성된 객체를 의미한다. 그래서 객체와 인스턴스라는 용어는 자주 혼용된다. 인스턴스는 주로 객체가 어떤 클래스에 속해 있는지 강조할 때 사용한다.
예를 들어서 student1
객체는 Student
클래스의 인스턴스다. 라고 표현한다
객체 vs 인스턴스
둘다 클래스에서 나온 실체라는 의미에서 비슷하게 사용되지만, 용어상 인스턴스는 객체보다 좀 더 관계에 초점을 맞춘 단어이다. 보통 student1
은 Student
의 객체라고 말하는 대신 student1
은 Student
의 인스턴스라고 말한다.
즉, 특정 클래스와의 관계를 명확히 할 때 인스턴스라는 용어를 주로 사용한다.
좀 더 쉽게 풀어보자면 모든 인스턴스는 객체지만 우리가 인스턴스라고 부르는 순간은 특정 클래스로부터 그 객체가 생성되었음을 강조하고 싶을 때다. 예를 들어 student1
은 객체지만, Student
클래스로부터 생성되었다는 점을 명확히 하기 위해 student1
을 Student
의 인스턴스라고 부른다.
하지만 둘다 클래스에서 나온 실체라는 핵심 의미는 같기 때문에 보통 둘을 구분하지 않고 사용한다.
클래스의 사용
-
변수 선언
Student student = new Student()
-
객체 생성
new Student()
: Student 클래스 정보를 기반으로 새로운 객체를 생성허는것. 메모리에 실제 Student 객체를 생성한다.
이 때, Student 클래스가 가진 멤버 변수를 사용하는데 필요한 메모리 공간도 함께 확보한다. -
참조값 보관
객체를 생성하면 자바는 메모리 어딘가에 있는 이 객체에 실제로 접근할 수 있는 참조값(주소)(x001
)을 반환한다.
new 키워드를 통해 객체가 생성되고 나면 참조값을 반환한다.
따라서 이 변수를 통해서 객체를 접근(참조)할 수 있는 것이다.Student student1 = new Student(); //1. Student 객체 생성 Student student1 = x001; //2. new Student()의 결과로 x001 참조값 반환 student1 = x001; //3. 최종 결과
Leave a comment