객체와 클래스
- 객체 : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성과 기능을 가지고 다른 것과 식별이 가능한 것.
- 클래스 : 프로그램 상에서 사용되는 속성과 행위를 모아놓은 집합체
- 설계도로 해당 객체를 만드는 작업이 필요
- 클래스에는 객체를 생성하기 위한 필드와 매소드가 정의 되어 있음
- 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스
→ 자동차 객체는 자동차 클래스의 인스턴스이다.
인스턴스
- 클래스로부터 객체를 만드는 과정을 인스턴스화라고 함.
- 하나의 클래스로부터 여러 개의 인스턴스(객체)를 만들 수 있음
- 객체의 속성 → 필드를 통해 정의
- 객체의 기능 → 메소드를 통해 정의
- 클래스로부터 메모리에 생성된 객체 → 해당 클래스의 인스턴스
- 서로 다른 인스턴스는 서로 다른 속성값을 가질 수 있다.
즉, 정리하자면
1. 객체는 프로그램에서 구현할 대상.
2. 이를 구현하기 위한 설계도가 클래스
3. 클래스로부터 메모리에 생성된 실체가 인스턴스


클래스 선언
public class Cat {
...
}
- 접근 제한자는 public, default 가능
<클래스 이름 작성 규칙>
- 하나 이상의 문자로 구성
- 첫번째 글자는 숫자가 올 수 없다
- $, _ 이외의 특수 문자는 사용할 수 없다
- 자바 키워드 사용불가
객체 생성
클래스명 변수명 = new 클래스명();
- new 연산자는 Heap 영역에 객체를 생성하고 객체의 주소값을 리턴
- 객체의 주소값을 참조 타입인 변수에 저장해서 객체를 사용할 수 있음
Cat cat = new Cat();
클래스 선언
public calss Cat{
}
클래스로부터 객체 생성
public class CatExample{
public static void main(String[] args) {
Cat c1 = new Cat();
System.out.println("c1 변수가 Cat 객체를 참조");
Cat c2 = new Cat();
System.out.println("c2 변수가 또 다른 Cat 객체를 참조");
}
}
- Cat 클래스는 하나지만, new 연산자를 사용한 만큼 객체가 메모리에 생성
- 이러한 객체들은 Cat 클래스의 인스턴스
- 같은 클래스 Cat 에서 생성되었지만 c1, c2가 참조하는 Cat 객체들은 완전히 독립된 서로 다른 객체
- Cat과 CatExample 클래스의 용도는 서로 다름
클래스의 용도 구분
1. 라이브러리 용도 (API)
- 라이브러리 클래스는 다른 클래스에서 이용할 목적으로 설게
- Cat 클래스가 라이브러리 클래스
→ Cat 클래스에 main() 메소드를 작성해서 라이브러리인 동시에 실행 클래스로 만들 수 있다
2. 실행 용도
- 실행 클래스는 프로그램 실행 진입점인 main() 메소드를 제공하는 역할
- CatExample 클래스