클래스와 객체
클래스의 생성자로 객체를 만드는 과정을 '인스턴스화(instantiation)'라고 하며, 인스턴스화로 만들어진 객체를 '인스턴스(instance)'라고 한다.
클래스 내부 구성 요소 중 생성자를 제외한 나머지 요소는 '인스턴스 멤버(instance member)'라고 한다.
클래스에 정의된 멤버는 바로 사용할 수 없으며, 객체를 생성해 사용해야 한다.
클래스
클래스(class)란 객체를 정의한 '설계도(blueprint) 또는 '틀(frame)'과 같다. -> 1개의 클래스로 여러 개의 객체 생성 가능
클래스의 구성요소와 기본 문법
- 클래스는 class 키워드와 함께 정의한다.
- 클래스명은 대문자로 시작하는 것이 관례다.
// 클래스 정의
class 클래스명 {
// ...
}
클래스의 외부 구성 요소
- 패키지(package) : 패키지를 지정하여 프로젝트를 생성할 때 포함된다. 주석을 제외한 첫 번째 줄에 위치
- 임포트(import) : 다른 패키지에서 클래스를 사용하고자 할 때 포함된다. 패키지 다음에 위치함.
- 외부 클래스(external class) : 클래스 외부에는 다른 클래스가 포함될 수 있으며, 외부 클래스에는 pubic 접근 지정자를 사용할 수 없다.
클래스 내부 구성 요소
생성자를 제외한 나머지 3가지 요소를 '클래스의 멤버(member)'라고 한다.
- 필드(field) : 클래스의 속성을 나타내는 변수, 차로 예를 들면 모델명, 컬러, 바퀴의 수 등
- 메서드(method) : 클래스의 기능을 나타내는 함수, 차로 예를 들면 시동하기, 가속하기, 정지하기 등
- 생성자(constructor) : 클래스의 객체를 생성하는 역할을 담당
- 이너 클래스(inner class) : 클래스 내부에 포함된 클래스를 의미
객체
객체란
- 객체란 사용할 수 있는 실체를 의미한다.
- 객체는 크게 속성(필드)과 기능(메서드)이라는 두 가지 구성요소로 이루어져 있다.
객체와 인스턴스의 차이
객체란 모든 인스턴스를 포괄하는 넓은 의미를 가지고 있는 반면, 인스턴스는 해당 객체가 어떤 클래스로부터 생성된 것인지를 강조한다.
객체 생성
- 객체는 new 키워드로 생성한다.
- 객체는 생성자를 통해 생성하며, new 키워드는 생성된 객체를 힙 메모리에 넣는 역할을 한다.
- 참조 변수에는 실제 데이터 값이 아니라 실제 데이터가 저장되어 있는 힙 메모리의 주소 값이 저장된다.
- 생성자는 클래스명과 동일하다.
// 클래스의 객체 생성
클래스명 참조 변수명 = new 생성자();
클래스명 참조 변수명;
참조 변수명 = new 생성자();
객체 생성 시 메모리 구조
- 클래스 Person : 메모리의 클래스 영역,
- 참조 변수 p : 스택 영역에 들어가며, 객체의 위칫값이 저장된다.
- 객체 : 생성자로 만들어진 객체는 힙 메모리에 위치하며, 객체 내부에는 클래스의 멤버(필드, 메서드, 이너 클래스)가 위치한다.
- 메서드(힙 메모리 영역) -> 메서드(클래스 영역) : 1개의 클래스로 만든 모든 객체는 속성(필드)은 다를 수 있지만, 기능(메서드)은 동일하다. 따라서 같은 클래스로 객체가 생성될 때마다 메서드를 만드는 것이 아닌 저장한 다음 필요한 경우에만 클래스 영역에 정의된 메서드를 찾아 사용한다.
객체의 활용
- 객체를 활용한다는 것은 객체 내부의 멤버를 사용한다는 의미다.
- 객체 내부의 멤버를 사용하기 위해서는 객체를 통해 호출하거나 접근할 수 있어야 한다.
- 이때 사용하는 것이 포인트 연산자(.)다. 그 의미는 '해당 위치에 있는 객체 안을 보세요'라는 뜻을 가지고 있다.
참조 변수명.필드명; // 필드값 불러오기
참조 변수명.메서드명(); // 메서드 호출
'Langauge > Java-basic' 카테고리의 다른 글
[Java] 메서드 시그니처와 메서드 오버로딩 (0) | 2022.07.19 |
---|---|
[Java] 필드와 메서드 (0) | 2022.07.18 |
[Java] 배열 (0) | 2022.07.11 |
[Java] 제어문 (조건문 / 반복문 / 제어키워드) (0) | 2022.07.08 |
[Java] 연산자 (0) | 2022.07.07 |