필드 (Field) : 객체의 고유 데이터, 객체가 가져야 할 부품, 객체의 현재 상태 데이터를 저장하는 곳
EX) 자동차 객체
- 고유 데이터 : 제작회사, 모델, 색깔, 최고 속도
- 상태 데이터 : 현재 속도, 엔진 회전수
- 부품 : 차체, 엔진, 타이어
필드 선언
- 클래스 중괄호 { } 블록 어디서든 존재할 수 있음
- 생성자 선언과 메소드 선언의 앞과 뒤 어떤 곳에서도 필드 선언이 가능
- 생성자와 메소드 중괄호 블록 내부에는 선언될 수 없음
- 생성자와 메소드 중괄호 블록 내부에 선언된 것 ➡ 로컬변수
- 필드선언 : 변수의 선언과 비슷 (클래스 멤버 변수라고 부르기도 함)
타입 필드 [ = 초기값];
- 타입 : 필드에 저장할 데이터의 종류
- 기본 타입 : byte, short, int, long, float, double, boolean
- 참조 타입 : 배열, 클래스, 인터페이스
- 기본타입과 참조타입 모두 올 수 있음
- 필드의 초기값 : 필드 선언시 주어질 수도 있고, 생략될 수도 있음
String company = "H자동차";
String model = "그랜저";
int maxSpeed = 300;
int productionYear;
int currentSpeed;
boolean engineStart;
필드 초기값
- 초기값이 지정되지 않은 필드들은 객체 생성시 자동으로 기본 초기값으로 설정
- 필드의 타입에 따라 초기값이 다름
분류 | 데이터 타입 | 초기값 | |
기본 타입 | 정수 타입 | byte char short int long |
0 \u0000 (빈공백) 0 0 0L |
실수 타입 | float double |
0.0F 0.0 |
|
논리 타입 | boolean | false | |
참조 타입 | 배열 클래스 (String 포함) 인터페이스 |
null null null |
필드 사용
- 필드를 사용한다는 것 : 필드 값을 읽고, 변경하는 작업
- 클래스 내부의 생성자나 메소드에서 사용할 경우 : 단순히 필드 이름으로 읽고 변경하면 됨
- 클래스 외부에서 사용할 경우 : 우선적으로 클래스로부터 객체를 생성한 뒤 필드를 사용해야 함
💡 필드는 객체에 소속된 데이터이기 때문에 객체가 존재하지 않으면 필드도 존재하지 않음 - 도트 ( . ) 연산자 : 객체 접근 연산자 - 객체가 가지고 있는 필드나, 메소드를 사용하고자 할 때 사용됨
필드 사용 EX)
- Car 클래스의 speed 필드는 생성자와 메소드에서 변경이 가능
- 사용법은 변수와 동일
- 변수 : 자신이 선언된 생성자 또는 메소드 블록 내부에서만 사용할 수 있음
- 필드 : 생성자와 모든 메소드에서 사용이 가능
- 외부 Person 클래스에서 Car 클래스의 speed 필드값을 사용하려면 Car 객체를 우선 생성해야 함
Car myCar = new Car();
- myCar 변수가 Car 객체를 참조하게 되면 도트( . ) 연산자를 사용해서 speed 필드에 접근할 수 있음
myCar.speed = 60;