상세 컨텐츠

본문 제목

[TIL#11-2] Java를 자바랑 part.5 <객체, 메서드>

내배캠/Chapter2

by DK9 2023. 10. 19. 12:15

본문

클래스(로 만든 설계도)를 사용해 보자.

앞서서 클래스(설계도)의 접근 제어자는 public이다. 굉장히 복잡하지만, 현 수준에서는 다른 파일에서도 public에 대해서 접근할 수 있다.

 

1. 객체

 1) 생성

 : '설계도클래스' '객체명(인스턴스)' = '새로생성한다' '설계도클래스안에서의생성자'

=           타입               이름              =         새로운            PracClassBuild

new : 신규 객체를 만들 때 사용한다(= 생성자를 호출하기 위해 사용한다).

 

객체 또한 참조형 변수처럼 별도의 공간에 저장한다. 즉 sout으로 car를 출력하면 주소가 출력되고, 배열로 관리할 수 있다.

   (1) 우선 객체(car1)는 PracClassBuild라는 클래스(설계도)로 만들어졌기에 car1에서 .(온점)을 누르면 사용할 수 있는 메서드들(ChangerGear)과 필드(gear = type)를 사용할 수 있다.

 

배열로 정리하면

   (2) 이런 식으로 배열로 관리할 수 있다. 향상된 for문을 해석하자면,

 PrackClassBuild 타입의 car(for문안에서 쓰는 초기값(= int = i))  들에 carArr에 저장된 값들을 돌아가면서 대입. 그리고 car의 gear를 sout으로 출력.

 

 

2. 객체 심화 분석

 1) 필드

 : 객체의 데이터를 저장하는 역할을 한다. 객체의 필드는 크게 ①고유데이터,  ②상태데이터,  ③객체데이터 로 분류할 수 있다. 엄밀히 말해 한 객체가 하위 객체를 가질 수 있다.

public class PracClassBuild {
    //필드 영역

    //-----------------고유 데이터 영역
    String company; //자동차 회사
    String model; // 자동차 모델
    String color; // 자동차 색상
    double price; // 자동차 가격
    //-----------------------상태 데이터 역역
    double speed; // 자동차 속도, km/h
    char gear; // 기어상태(P, R, N, D
    boolean lights; // 자동차 조명,
    //------------------------------객체 데이터 영역
    PCBtire pcBtire;
    PCBdoor pcBdoor;
    PCBhandle pcBhandle;

 : 고유 데이터 영역을 보면 선언을 하고 초기화(=할당) 하지 않았다. 그럴 때는 아래와 같이 기본 값으로 잡힌다.

 : 필드를 사용한다는 의미는 필드의 값을 읽거나 변경한다는 것을 의미한다. 그렇게 하기 위해서는 객체를 생성(=인스턴스화)이 필요하다. 그 후 객체를 통해 필드를 사용할 수 있다. 클래스는 설계도이다. 컴퓨터의 설정을 변경하기 위해 사용설명서의 글자를 수정하는 사람은 없을 것이다.

 

   (1) 필드 접근 방법

  • 외부 접근
    • 객체를 생성한 후 .(온점)을 사용하여 접근, 이때의 .(온점)은 도트연산자이다.
    • 하위 요소에 접근하는 방법은 대부분 도트연산자이다.
  • 내부 접근
    •  클래스(설계도) 내부의 메서드 영역에서 호출하는 방법이다.

 

   2) 실습

좌측 객체를 불러온 메인 메서드, 우측 설계도 클래스

 출력 값은 이렇다.

car model = A8  /  car color = null  /  car speed = 0.0

car gear =  /  car light = true


car tire = PCBtire@b1bc7ed  /  car door = null
car color = blue  /  car light = false  /  car speed = 100.0

관련글 더보기