객체의 데이터를 저장
생성자와 메소드 전체에서 사용됨
객체가 소멸되지 않는 한, 객체와 함께 존재 (필드는 변수가 아님!)
변수 vs 필드
- 변수: 자신이 선언된 생성자 or 메소드 블록 내부에서만 사용 가능
- 필드: 생성자, 모든 메소드에서 사용 가능
Tire클래스
public class Tire {
public Tire() {}
}
Door클래스
public class Door {
public Door() {}
}
Handle클래스
public class Handle {
public Handle() {}
}
Car클래스
public class Car {
//필드
// 고유 데이터 영역
String company; // 자동차 회사
String model; // 자동차 모델
String color; // 자동차 색상
double price; // 자동차 가격
// 상태 데이터 영역
double speed; // 자동차 속도 , km/h
char gear; // 기어의 상태, P,R,N,D
boolean lights; // 자동차 조명의 상태
// 객체 데이터 영역
Tire tire;
Door door;
Handle handle;
// 기본 생성자
public Car() {}
// 메소드
...
}
// 클래스
public class Car {
// 필드
String company = "현대자동차";
String model = "그랜저";
int maxSpeed = 350;
int speed;
}
클래스 { } 중괄호 블록 내부면 어디든 가능
단, 생성자와 메소드 { } 중괄호는 불가능
타입: 기본 타입, 참조 타입(배열, 열거, 인터페이스) 모두 가능
초기값: 생략될 수도 있음
byte
, short
, 정수형의 int
, 실수형의 double
기본형이기 때문에 접미사를 붙이지 X
byte
, short
연산에 이용하기보다는 저장 목적인 경우가 많아
Java 의 내장 변환모듈이 자동으로 형 변환시켜준다.
long 타입
구분을 위해 100L 처럼, 리터럴 마지막에 접미사로 L을 붙인다
float
, double
public class Car {
//필드
int speed;
//생성자
...
//메소드
double brakePedal() {
speed = 0;
return speed;
}
}
문법
public class Person {
void method() {
// Person 클래스에서 Car 클래스의 speed 필드값을 사용하기위해서는 먼저 Car 객체를 생성해야함
// Car 객체 생성
Car myCar = new Car();
// 필드 사용
// Car 객체의 speed 필드값을 60으로 변경
myCar.speed = 60;
}
}
참조변수 myCar을 이용해서, 외부에서 객체 내부의 필드에 접근하여 사용 가능
클래스로부터 객체를 생성한 후, 필드를 사용해야 함 (객체에 필드가 소속되어 있으므로)
Car클래스
public class Car {
String model = "Gv80"; // model 필드 값에 “Gv80” 초기값 주기
String color;
char gear;
boolean lights = true; // lights 필드 값에 true 초기값 주기
Tire tire = new Tire(); // tire 필드 값에 new Tire() 초기값 주기
Door door;
// 생성자
...
...
}
Main클래스
public class Main {
public static void main(String[] args) {
Car car = new Car(); // 객체 생성(인스턴스화)
// 초기값과 기본값 확인하기
System.out.println("car.model = " + car.model); // 초기값 "Gv80"이 출력됩니다. -> 초기값이 출력됨
System.out.println("car.color = " + car.color); // 기본값 null이 출력됩니다.
System.out.println();
System.out.println("car.gear = " + car.gear); // 기본값 \u0000(공백)이 출력됩니다.
System.out.println("car.lights = " + car.lights); // 초기값 true가 출력됩니다. -> 초기값이 출력됨
System.out.println();
System.out.println("car.tire = " + car.tire); // 초기값 인스턴스의 주소가 출력됩니다. -> 초기값이 출력됨
System.out.println("car.door = " + car.door); // 기본값 null이 출력됩니다.
System.out.println();
// 필드 사용
car.color = "blue"; // 필드 color에 "blue" 데이터를 저장
car.lights = false; // 필드 lights에 false 데이터를 저장
System.out.println("car.color = " + car.color); // 저장된 "blue" 데이터가 출력
System.out.println("car.lights = " + car.lights); // 저장된 false 데이터가 출력
}
}