[SEB BE] Section 1. 클래스와 객체

박두팔이·2022년 12월 28일
0

자바

목록 보기
5/26

클래스와 객체

클래스(Class)

  • 클래스란 객체를 만들기 위한 설계도 혹은 틀이라고 이해하면 좋다.

이렇게 클래스를 통해 생성된 객체인스턴스(instance)라고 하며 이 과정을 인스턴스화(instantiate)라고 한다.

  • 객체와 인스턴스의 차이? 객체는 모든 인스턴스를 포괄하는 넓은 의미, 인스턴스는 어떤클래스로부터 생성된 것인지를 강조한다.
  • 클래스를 정의하고 객체를 생성하는 이유? 예를들면 붕어빵 틀에 비유를 해보자. 잘 만들어진 붕어빵틀은 같은 모양의 붕어빵을 몇 번이고 만들 수 있다. 클래스를 한번 잘 정의해놓으면 객체를 생성할 때마다 클래스를 가져다 쓰기만 하면 된다.

클래스는 class키워드를 사용하여 정의할 수 있다. 주로 대문자로 시작하는 것이 관례이다

class Mac{
}

클래스의 구성요소 : 이 / 필/ 메/ 생

이필메생으로 외워두면 구분하기가 쉽다.
(1) 이: 이너클래스 - 클래스 안에 내부클래스
(2) 필: 필드 - 속성을 나타내는 변수
(3) 메: 메소드 - 기능을 나타내는 실행명령
(4) 생: 생성자 - 객체를 생성하는 역할

이중에서 생성자를 제외한 이/필/메 3가지 요소를 클래스의 멤버라고 한다.

객체(Object)

객체에도 마찬가지로 필드와 메서드로 정의되는 속성과 기능이라는 두가지 구성요소가 있다. 마찬가지로 여기서도 이/필/메는 멤버라고 불린다.

객체의 생성 (new)

객체는 new라는 키워드로 생성이 가능하다. 객체를 생성하는 문법은 다음과 같다.

클래스명 참조변수명 = new 생성자();

new라는 키워드는 객체를 생성하여 힙 메모리에 넣으라는 의미를 가지고 있다.
따라서 참조변수에 저장되는 값은 실제 존재하는 값이 아닌 가상 jvm이 준 해시코드 값이 저장된다. 즉, 생성자가 저장된 힙 메모리의 주소값이다.

메모리 영역을 살펴보면 좀 더 이해가 쉽다.
메모리 영역에는 클래스 영역/ 스택 영역/ 힙 메모리영역 이 있다. (두가지 더 있지만 아직은 몰라도됨)
클래스영역엔 당연히 클래스가 들어간다. 클래스 영역은 모든영역에 영향을 준다. 스택영역엔 주소값이 저장되어있는 참조변수가 저장이 되고 힙 메모리 영역엔 생성된 객체가 저장된다. 같은 클래스로 만든 모든 객체는 동일한 메서드 값을 공유하기 때문에 클래스영역에 한번만 저장해두고 필요한 경우에만 클래스영역에 정의된 메서드를 찾아 사용한다.

객체의 활용 (.)

이렇게 생성된 객체는 포인트연산자(.)을 사용하여 활용할 수 있다.
포인트연산자란 '해당 위치에 있는 객체 안을 보라'라는 뜻을 가지고 있다.

참조변수명.변수명; //필드값 불러오기
참조변수명.메서드명();  //메서드호출

Mac mac = new Mac(); //인스턴스생성
mac.watches; //필드
mac.macbook(); //메서드호출
profile
기억을 위한 기록 :>

0개의 댓글