객체를 정의하는 틀 또는 설계도와 같은 의미
객체의 상태를 나타내는 필드와 객체의 행동을 나타내는 메서드로 구성된다.
public class Student {
String name;
int age;
int grade;
}
클래스에 정의한 변수들을 멤버 변수 또는 필드 라고 한다.
String name, int age, int grade // 이게 멤버 변수이다.
클래스를 사용해서 실제 메모리에 만들어진 실체를 객체 또는 인스턴스라고한다.
즉, 클래스는 설계도, 설계도를 기반으로 실제 메모리에 만들어진 실체가 객체 또는 인스턴스
1. 변수 선언
Student student1
Student 타입을 받을 수 있는 변수를 선언한다.
Student 타입의 객체(인스턴스)를 받을 수 있음
2. 객체 생성
new Student();
new Student()를 통해 새로운 객체를 생성한다.
new 연산자를 통해 Student 타입의 객체가 생성되는 것
이렇게 하면 메모리에 해당 Student 객체(인스턴스)를 생성하며 해당 객체의 주소값을 반환한다.
Student 클래스에는 String name, int age, int grade 멤버 변수도 있으므로 해당 메모리 공간도 같이 확보된다.
3. 참조값 보관
Student student1 = new Student();
객체를 생성하면 자바는 메모리 어딘가에 이 객체를 접근할 수 있는 참조값을 반환한다.
new Student()를 통해 생성된 객체의 참조값을 반환한다.
Student student1 변수는 메모리에 존재하는 실제 Student 객체(인스턴스)의 참조값을 가지고 있다.
※ 따라서 실제 객체에 접근하고 싶으면 student1 변수를 통해서 접근할 수 있다.
실제 참조값
사진에 나온 것처럼 @뒤에 숫자들이 참조값(메모리 주소)이다.
이 참조값은 랜덤으로 배정이 된다.
클래스를 통해 생성된 객체를 사용하려면 메모리에 존재하는 객체에 접근해야한다.
객체에 접근하려면 .(점, dot)을 사용한다.
Student student1 = new Student();
student1.name = "이병수";
student1.age = 27;
클래스는 객체가 가져야 하는 속성(상태, 변수)와 기능(메서드)를 정의한다.
객체를 생성하기 위한 설계도
클래스에서 정의한 속성(상태, 변수)와 기능(메서드)을 가진 실체이다.
객체는 서로 독립적인 상태를 가진다.
특정 클래스로부터 생성된 객체를 의미한다.
객체와 인스턴스가 클래스로부터 나온 실체라는 의미에서 비슷하게 사용된다.
주로 객체가 어떤 클래스에 속해 있는지 강조할 때 사용
참고사항
자바에서 대입(=)은 항상 변수에 들어있는 값을 복사해서 전달 한다는 것을 잊지말자!
따라서 객체(인스턴스)를 대입한다고 하면 객체(인스턴스) 자체를 복사하는 것이 아닌 객체(인스턴스)의 위치를 가리키는 참조값을 복사한다!