본문으로 바로가기

1. 필드

  • 객체의 데이터(고유 특성)가 저장되는 곳
  • 객체의 고유 데이터, 객체가 가져야 할 부품, 객체의 현재 상태 정보를 저장하는 곳
  • 선언 형태가 변수와 비슷하지만, 필드를 변수라고 부르지 않습니다.

예시

public class Computer {
    // 필드 (고유 데이터)
    String modelName = "MacBook Air M1";    
    String adminName;
    int serialNumber;

    // 필드 (상태)
    boolean power;

    // 필드 (부품)
    Cpu cpu = new IntelCpu();
    Gpu gpu = new NvidiaGpu();
    Memory memory = new SamsungMemory();
}

 

2. 필드 선언

  • 클래스 중괄호 {} 블록 내 어디서든 선언할 수 있습니다.
  • 생성자와 메소드 중괄호 블록 내부에 선언된 것은 모두 로컬 변수가 됩니다.
  • 기본 타입, 참조 타입을 이용하여 필드를 선언합니다.
  • 필드의 초기값은 필드 선언 시 주어질 수도 있고, 생략될 수도 있습니다.
  • 초기값이 지정되지 않은 필드들은 객체 생성 시 자동으로 기본 초기값으로 설정됩니다.

필드 설명

필드 기본 초기값

필드 선언 시 초기값이 지정되지 않은 필드들은 객체 생성 시 다음과 같은 초기값으로 설정됩니다.

필드 기본 초기값

 

3. 필드 사용

  • 필드 사용 = 필드 값을 읽고, 변경하는 작업
  • 필드를 사용하려면 클래스를 이용해 객체를 생성해야 합니다. (객체가 존재해야 필드 또한 존재합니다.)
  • 필드를 사용할 경우 . 연산자를 이용하여 직접 사용해도 되지만 메소드를 사용해서 읽고 변경하는 것을 권장합니다.
  • getter/setter 메소드, 생성 메소드 비즈니스 로직 메소드

 

예시

[Computer 클래스]

public class Computer {
    // 필드
    String modelName = "MacBook Air M1";
    int serialNumber;

    //==getter 메소드==//
    public String getModelName() {
        return modelName;
    }

    public int getSerialNumber() {
        return serialNumber;
    }

    //==setter 메소드==//
    public void setModelName(String modelName) {
        this.modelName = modelName;
    }

    public void setSerialNumber(int serialNumber) {
        this.serialNumber = serialNumber;
    }
}

 

[실행 클래스]

public class Main {
    public static void main(String[] args) {
        // 객체 생성
        Computer computer = new Computer();

        // 필드 값 읽기
        System.out.println(computer.getModelName()); // MacBook Air M1
        System.out.println(computer.getSerialNumber()); // 기본 초기값으로 설정됨 (int = 0)

        // 필드 값 변경
        computer.setSerialNumber(3254);
        System.out.println(computer.getSerialNumber()); // 3254
    }
}