본문 바로가기
It Study/POWER JAVA(기본서)

POWER JAVA (개념) - 클래스란?

by prlkt5200 2022. 9. 29.
반응형

power java 책을 읽으면서, 제 나름대로 핵심을 요약해 봤습니다! 

(요약이라 해놓고 글이 많아 읽기 힘드시겠으나 그래도 완전 생초짜분들에게는 도움이 안되지는 않을 것이니 정독해주시면, 감사하겠습니다.)

많은 분들께 그리고 저 자신에게도 도움이 되길 바라면서 글을 시작하겠습니다.

(이 글은 power java의 4.2 클래스란? 에서 인용하고 참고한 글입니다.)

 

본 글을 시작하기에 앞서 객체지향과 객체에 간략히 설명한 글을 참고해주시면 감사하겠습니다.

 https://forfire700.tistory.com/31

 

 

 

 

클래스는 특정한 객체를 생성하는 틀, 설계도, 공장, 기계 라고 생각하시면 편합니다.

그리고 이 설계도를 통해서 찍어낸 객체를 인스턴스라고 표현합니다.

여기서 주의해야 하는 점이 있는데, 하나의 클래스(틀, 설계도, 공장, 기계)에서 여러개의 인스턴스(객체)를 

찍어내지만 인스턴스마다 속성의 값이 다르다는 것입니다. 마치 자동차 클래스로 자동차 객체를 많이 생성해도 

각 자동차의 현재 상태가 다 틀린 것처럼요.

 

(TIP:객체란 것이 내포하고 있는 의미가 너무 방대해서, 프로그래밍에서는

특정한 클래스로 부터 생성한 객체는 인스턴스다. 로 정의하기로 했습니다! 그리고 클래스는

유형, 부류라는 의미가 있어서 하나의 대카테고리로 이해해도 좋습니다! 예를들면 자동차 클래스(대카테고리) 내에

suv, 승용차(인스턴스)로 표현할 수 있습니다.)

 

클래스는 객체처럼 데이터와 함수가 있는데 이것을 다른 말로 필드(데이터, 상태)와 메소드(함수, 기능)라고 합니다.

물론 말로만 떠도는 것보다 한번 보여드리는 게 나을 듯 싶어 power java 책 속의 예제를 통해 클래스의 대략적인 형태와

어떻게 상호작용하는지 설명하겠습니다.

 

 

위 클래스는 원을 찍어내기 위한 클래스입니다

그리고 radius(반지름), color(색상)이라는 상태가 있습니다.

바로 아래에는 getArea();라는 반지름을 구하는 메소드(기능,함수)가 있습니다.

 

 

 

클래스를 만들었으니 이제는 객체를 생성해 보겠습니다.

(이 부분은 내용이 제 설명부족으로 이해하기 어려울 수 있으니 순서로 다시 정리하겠습니다.)

 

1.Circle obj;를 통해 이제 곧 만들 객체를 찾아가기 위한 참조 변수를 선언합니다. (참조 변수는 특정 객체를 찾아가기 위한 주소?로 일단 이해해주세요! 자세한 내용은 저도 공부해야 해서 정확히 설명 못드리겠네요 ㅠㅠ) 

 

2. 참조 변수가 선언되었으니 obj = new Circle();에서 new~~부분으로 객체를 생성하고  "=" 연산자를 통해서

참조변수와 객체를 묶어줍니다.

즉 obj를 따라가면 거기에 Circle 클래스로 부터 찍어낸 인스턴스(특정 클래스로 부터 찍어낸 객체 - 여기서는 Circle 클래스로 부터 찍어낸 객체)가 있을거야! 를 의미합니다.

 

3.new 연산자에 대해서 더 설명하면 

new연산자를 통해 객체를 힙 메모리(사용되지 않은 메모리)에 생성한 후에 객체의 참조값(객체의 주소)을 반환합니다. 코드에서는 이 참조값을 참조 변수 obj에 저장한다고 되어있습니다. (참고로 참조 변수의 객체가 직접적으로 저장이 되는 게 아니라는 사실을 명심해주셔야합니다!)

 

(2번과 3번을 다시 요약하면, 클래스를 이용해 객체를 힙메모리에 생성하고 객체의 속성과 기능인 참조값을 참조 변수로 저장함으로서 참조 변수를 통해 그 객체를 이용할 수 있게 한다는 의미입니다.)

 

4.객체를 생성했으니  obj.radius 와 obj.color 객체를 초기화 해줘야 합니다. 그러니까 값을 입력해줍니다.

의미는, 참조 변수 obj를 타고 가면 거기에 객체가 있을 거고, 또 그 객체의 속성이 있을 건데.

그 속성들을 각각 100과, blue로 해줄거야 라는 의미입니다.

 

5.마지막으로 double area = obj.getArea();는 참조변수를 타고 들어간 객체의 메소드를 통해 출력되는 값을

다시 double area 변수에 입력해준다는 의미입니다.

 

 

 

흐름은 이와 같습니다.

객체 생성 - 참조변수와 객체를 묶는다. - 객체의 값을 참조변수를 타고 들어가 초기와 - 초기화 된 값을 사용하는 메소드를 참조 변수를 이용해서 새로운 변수와 묶어준다.

 

아직은 글을 포스팅 하는 게 산만하네요...점차점차 깔끔하게 해볼테니 많이 불편해도 조금만 참아주세요.

반응형