[ 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;
}
왜냐하면,
필드는 객체에 소속된 데이터이기 때문에 객체가 존재하지 않으면 필드도 존재하지 못하기 때문입니다.
이상으로 오늘은 클래스의 구성 요소인 필드에 대해 좀 더 자세히 알아보았습니다.
필드는 변수와 비슷하지만, 확연하게 다른 기능을 수행하기 때문에 헷갈리지 않도록 주의하여야 합니다.
다음에는 메서드에 대해 자세히 알아보도록 하겠습니다.
'Java' 카테고리의 다른 글
[ JAVA ] 05. 클래스(Class)의 구성 요소인 생성자(Constructor)는 무엇인가? (0) | 2023.07.04 |
---|---|
[ JAVA ] 04. 클래스의 구성 요소인 메서드(Method)는 무엇인가? (0) | 2023.07.03 |
[ JAVA ] 02. 자바의 근간인 클래스(Class)는 무엇인가? (0) | 2023.07.01 |
[ JAVA ] 01. 자바(Java)란 무엇인가? (0) | 2023.06.30 |
[ JAVA ] 00. Window10에서 JAVA 개발 환경 구축하기 ( JDK11 ) (0) | 2023.06.28 |