본문 바로가기

Android Development/Java

Java 필드(Field)의 개념과 사용 방법

Java Field 개념 정리

Field 정의

  • 클래스의 상태를 나타내는 변수
  • 객체의 데이터, 속성, 상태를 저장
  • 클래스 레벨에서 관리되는 멤버 변수
  • 자동차 객체의 경우 제작회사, 모델, 색상, 엔진 등의 정보가 Field로 저장됨

Field 선언 방법

  • 접근 제어자 (public, private 등)
  • 데이터 타입 (int, String 등)
  • 변수명
  • 클래스 내에서 선언되며 생성자와 메소드 앞뒤 어디서든 가능
public class Car {
    public String model = "KIA";  // public 필드
    private String color;         // private 필드
    private int maxSpeed;         // private 필드
}
    

Field 사용 방법

  • 클래스 내부에서는 필드명으로 접근
  • 클래스 외부에서는 객체명.필드명으로 접근 (ex: member1.color)
  • 지역변수와 인스턴스변수 이름이 같을 경우 this.를 사용해 인스턴스변수를 구분
public class Car2 {
    String model;  // 인스턴스 변수
    static String lineup;  // 클래스 변수

    public Car2(String model) {
        this.model = model;  // this.를 사용해 인스턴스 변수 초기화
    }
}
    

Field 특징

  • 접근 제어자
    • 필드에 public, private, protected 접근 제어자 사용 가능
    • private 필드는 같은 클래스 내에서만 접근 가능
  • 정적 필드(Static Fields)
    • static 키워드로 선언
    • 모든 인스턴스에서 공유되며 클래스가 메모리에 로드될 때 생성
  • 초기화
    • 필드는 선언 시 또는 생성자에서 초기화 가능
    • 초기화하지 않은 필드는 기본값을 가짐 (ex: int 필드의 기본값은 0, 객체 참조의 기본값은 null)

Field 종류

  • 클래스 변수(cv: class variable)
    • static 키워드로 선언된 변수
    • 모든 인스턴스가 공유하는 변수
  • 인스턴스 변수(iv: instance variable)
    • static 키워드 없이 선언된 변수
    • 각 인스턴스가 고유하게 가지는 변수
  • 지역 변수(lv: local variable)
    • 메서드 내에서 선언된 모든 변수
    • 메서드가 종료되면 소멸
public class Car {
    static int numberOfCars;  // 클래스 변수

    String brand;  // 인스턴스 변수
    int year;

    public Car(String brand, int year) {
        this.brand = brand;
        this.year = year;
        numberOfCars++;  // 클래스 변수 증가
    }

    public void accelerate() {
        int acceleration = 10;  // 지역 변수
        System.out.println("Car is accelerating. Acceleration: " + acceleration);
    }
}
    

 

  • 캡슐화
    • 필드를 private으로 선언하고 public 메서드(getter와 setter)를 통해 접근하도록 하여 데이터를 보호.
  • 불변성
    • 가능하면 필드를 final로 선언하여 변경 불가능하게 만들어 프로그램의 안정성을 높임
  • 명확성
    • 필드 이름은 저장하고 있는 데이터를 명확하게 표현할 수 있도록 명명.

'Android Development > Java' 카테고리의 다른 글

java의 작동 원리  (1) 2024.09.13
Java Method의 개념과 활용 예제 정리  (1) 2024.09.12
Java Class & constructor 개념 정리  (2) 2024.09.09