객체는 SW상에 구현할, 실제 세계의 대상이다.
i.e. 학생 (이름, 학년 정보를 가짐)
클래스는 객체를 정의하고 만들어내기 위한 설계도 혹은 틀이다. 이는 객체에 관련된 변수나 메서드의 집합이다.
i.e. 아래 코드에서 Student는 '학생'이라는 객체를 이름과 학년 정보를 가지도록 클래스로 만든 것이라고 볼 수 있다.
// 클래스 'Student'
public class Student {
//관련 변수
private String name;
private Integer grade;
// 관련 메서드
public Student (String name, Integer grade) {
this.name = name;
this.grade = grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
}
클래스는 메모리 상 Stack에 저장된다.
객체를 메모리에 동적 할당하여 SW세계에 구현한 것. Java의 경우 new 키워드를 통해 클래스를 이용하여 만든 객체
i.e. 아래의 경우, 변수 s에 Student의 인스턴스가 할당되었다고 표현한다.
public class Main{
public static void main(String[] args) {
Student s = new Student("Mina", 3);
// 이름이 Mina이고, 3학년인 학생의 정보를 Student 인스턴스 생성을 통해 저장함.
}
}
인스턴스는 메모리 상 Heap에 저장되고, 언어에 따라 다르지만 Java의 경우 Garbage Collector에 의해 자동으로 메모리 소멸이 이루어진다.