클래스(로 만든 설계도)를 사용해 보자.
앞서서 클래스(설계도)의 접근 제어자는 public이다. 굉장히 복잡하지만, 현 수준에서는 다른 파일에서도 public에 대해서 접근할 수 있다.
: '설계도클래스' '객체명(인스턴스)' = '새로생성한다' '설계도클래스안에서의생성자'
= 타입 이름 = 새로운 PracClassBuild
new : 신규 객체를 만들 때 사용한다(= 생성자를 호출하기 위해 사용한다).
객체 또한 참조형 변수처럼 별도의 공간에 저장한다. 즉 sout으로 car를 출력하면 주소가 출력되고, 배열로 관리할 수 있다.
(1) 우선 객체(car1)는 PracClassBuild라는 클래스(설계도)로 만들어졌기에 car1에서 .(온점)을 누르면 사용할 수 있는 메서드들(ChangerGear)과 필드(gear = type)를 사용할 수 있다.
배열로 정리하면
(2) 이런 식으로 배열로 관리할 수 있다. 향상된 for문을 해석하자면,
PrackClassBuild 타입의 car(for문안에서 쓰는 초기값(= int = i)) 들에 carArr에 저장된 값들을 돌아가면서 대입. 그리고 car의 gear를 sout으로 출력.
: 객체의 데이터를 저장하는 역할을 한다. 객체의 필드는 크게 ①고유데이터, ②상태데이터, ③객체데이터 로 분류할 수 있다. 엄밀히 말해 한 객체가 하위 객체를 가질 수 있다.
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) 필드 접근 방법
출력 값은 이렇다.
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