클래스(class)
객체(인스턴스)
- 객체(인스턴스) =설계도를 기반으로 실제 메모리에 만들어진 것
Student student1 = new Student();
- Student 클래스는 Student 타입의 객체(인스턴스)를 받을 수 있다.
- new Student()는 Student 클래스 정보를 기반으로 새로운 객체를 생성한 것
- 객체를 생성하면 자바는 메모리 어딘가에 있는 이 객체에 접근할 수 있는 참조값(주소)을 반환(보관, return)한다.
- Student student1 변수는 이제 메모리에 존재하는 실제 Student 객체의 참조값을 가지고 있다.
- student1 변수를 통해 메모리에 있는 실제 객체에 접근하고 사용할 수 있다.
참조값
- 객체를 생성할 때, 자바는 그 객체가 메모리의 특정 위치에 저장되도록 한다.
- 이 메모리 위치를 가리키는 것이 참조값이다. Student student1 = new Student();에서 student1 변수는 Student 객체의 참조값을 가집니다.
Q.참조값을 왜 변수에 보관해야 돼?
- 객체에 접근하기 위해:
- 객체는 메모리에 생성되며, 참조값 없이는 해당 객체에 접근할 수 없다. 참조값을 변수에 보관하면 그 변수를 통해 객체에 접근하고, 메서드를 호출하거나 속성을 조작할 수 있다.
- 예를 들어, Account myAccount = new Account();에서 myAccount를 통해 deposit() 메서드나 balance 속성에 접근할 수 있다. 만약 참조값을 보관하지 않는다면, 생성된 객체를 다시 사용할 방법이 없다.
- 객체의 상태를 유지하기 위해:
- 참조값을 변수에 보관함으로써, 해당 객체의 상태를 여러 번 변경하거나 확인할 수 있다.
- 예를 들어, myAccount.deposit(100);을 호출한 후 myAccount의 balance가 100으로 변경된다. 이 상태를 유지하려면 참조값을 보관하고 있어야 한다.
- 메모리 관리:
- 자바의 가비지 컬렉션은 더 이상 참조되지 않는 객체를 자동으로 메모리에서 제거한다. 참조값을 변수에 보관하지 않으면 객체는 접근 불가능한 상태가 되어 가비지 컬렉션에 의해 제거될 수 있다. 따라서 참조값을 변수에 보관하여 객체를 필요할 때까지 유지할 수 있다.
- 코드 재사용성:
- 참조값을 변수에 보관하면, 동일한 객체를 여러 번 참조하거나 다른 메서드에 전달할 수 있다.
- 예를 들어, Account myAccount = new Account(); 후 myAccount.deposit(100);, myAccount.withdraw(50);처럼 동일 객체에 대해 여러 작업을 수행할 수 있다.