Langauge/Java-basic

[Java] 클래스와 객체

강잇 2022. 7. 13. 23:14

클래스와 객체

클래스의 생성자로 객체를 만드는 과정을 '인스턴스화(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개의 클래스로 만든 모든 객체는 속성(필드)은 다를 수 있지만, 기능(메서드)은 동일하다. 따라서 같은 클래스로 객체가 생성될 때마다 메서드를 만드는 것이 아닌 저장한 다음 필요한 경우에만 클래스 영역에 정의된 메서드를 찾아 사용한다.

객체의 활용

  • 객체를 활용한다는 것은 객체 내부의 멤버를 사용한다는 의미다.
  • 객체 내부의 멤버를 사용하기 위해서는 객체를 통해 호출하거나 접근할 수 있어야 한다.
  • 이때 사용하는 것이 포인트 연산자(.)다. 그 의미는 '해당 위치에 있는 객체 안을 보세요'라는 뜻을 가지고 있다.
참조 변수명.필드명; // 필드값 불러오기
참조 변수명.메서드명(); // 메서드 호출