Java

[ JAVA ] 03. 클래스의 구성 요소인 필드(Field)는 무엇인가?

giryu 2023. 7. 2. 18:42

https://giryu.tistory.com/4

 

[ JAVA ] 02. 자바의 근간인 클래스(Class)는 무엇인가?

안녕하세요. 오늘은 자바에서 가장 기본적이지만, 중요한 클래스의 개념에 대해 알아보도록 하겠습니다. 자바는 클래스 기반의 언어라고도 할 정도로 모든 것들이 클래스를 위주로 돌아갑니다.

giryu.tistory.com

클래스의 개념

 

안녕하세요.

오늘은 클래스(Class)의 구성 요소 중 필드(Field)에 대해 자세히 다뤄보고자 합니다.

 

 

필드 (Field)

필드는 객체가 가지는 고유한 데이터, 가져야 할 부품, 현재 상태 데이터를 저장하는 역할을 수행합니다.

이를 더욱 쉽게 이해하기 위해 실생활에서 사용하는 물건인 컴퓨터로 예를 들어 설명하겠습니다.

 

Ex) 컴퓨터 객체

고유한 데이터: 제조 회사, 용량, 포트의 수 등

부품: GPU, CPU, SSD, 마더보드 등

현재 상태 데이터: 패널 회전 수, CPU, GPU의 온도, 메모리 사용량 등

 

이와 같이 실생활에서 자주 사용하는 컴퓨터 또한 객체로 나누어 생각할 수 있고,

이를 클래스로 설계할 수도 있습니다.

public class Computer {

    // 고유한 데이터
    String company;	// 제조 회사
    float volume;	// 용량
    int ports_Num;	// 포트의 수
    
    // 부품
    String gpu;		// GPU
    String cpu;		// CPU
    String ssd;		// SSD
    String motherboard	// 마더보드
    
    // 현재 상태 데이터
    float rpm		// 패널 회전 수
    float temp_gpu	// GPU의 온도
    float temp_cpu	// CPU의 온도
    float use_memory	// 메모리 사용량
    
}

이렇게 컴퓨터 클래스를 설계할 때에는 객체들을 필드로 선언하여야 합니다.

 

 

필드는 어떻게 선언하는가?

(데이터)타입 필드;
// 타입: 필드에 저장할 데이터 종류를 결정하는 역할
// 기본형 타입(primitive type)과 참조형 타입(reference type) 모두 사용 가능
// 초기 값을 지정하지 않은 필드는 객체 생성 시 자동으로 기본 초기 값으로 설정

OR 


(데이터)타입 필드 = 값;

필드를 선언하는 방법은 변수의 선언 형태와 비슷합니다.

중괄호( { } ) 블록 내부라면 어디서나 선언이 가능합니다.

추가로 생성자(Constructor)와 메서드(Method) 선언의 앞이나 뒤나 마음대로 선언이 가능합니다. 

 

하지만, 한가지 명심해야 할 것이 있습니다.

생성자와 메서드가 선언되는 중괄호 블록 내부에는 필드를 선언할 수 없습니다.

 

* 그렇다면 생성자와 메서드 중괄호의 내부에는 무엇을 사용하는가?

생성자와 메서드 중괄호 내부에 선언되는 것은 모두 로컬 변수라고 부릅니다. (로컬 변수 != 필드)

 

 

필드는 어떻게 사용하는가?

필드를 사용한다는 것은 필드 값을 읽거나, 변경한다는 의미와 같습니다.

 

클래스 내부의 생성자나 메서드에서 사용될 경우 단순하게 필드 이름으로 읽고 변경하면 됩니다.

public class Computer {
	
    // 필드
    float temp_cpu;
    
    // 생성자
    Computer() {
    	temp_cpu = 55.3;
    }

    // 메서드
    void in_Com( . . . ) {
    	temp_cpu = 55.4;
    }
}

클래스 내부에서의 temp_cpu 필드는 변수와 사용 방법이 동일합니다. (생성자와 메서드에서 변경 가능)

*But, 변수는 자신이 선언되어진 생성자 or 메서드 블록 내부에서만 사용이 가능한 지역 변수인 반면,

필드는 생성자와 메서드 어디서든 사용이 가능하다. (전역 변수와 비슷)

 

클래스 외부에서 사용될 경우 클래스로부터 객체를 우선적으로 생성한 뒤 필드를 사용하여야 합니다.

void out_Com( . . . ) {
	
    // Computer 객체 생성
    Computer myCom = new Computer(); // 이 과정이 필수적으로 선행되어야 함.
    
    // 필드 사용
    myCom.temp_cpu = 70.8;

}

왜냐하면,

필드는 객체에 소속된 데이터이기 때문에 객체가 존재하지 않으면 필드도 존재하지 못하기 때문입니다.

 

 

이상으로 오늘은 클래스의 구성 요소인 필드에 대해 좀 더 자세히 알아보았습니다.

필드는 변수와 비슷하지만, 확연하게 다른 기능을 수행하기 때문에 헷갈리지 않도록 주의하여야 합니다.

다음에는 메서드에 대해 자세히 알아보도록 하겠습니다.