Java

[JAVA] Field와 Property

LimeCoding 2023. 10. 2. 13:52

자바를 공부하다보면 필드(field)와 프로퍼티(property)에 대한 내용이 나온다. 이 개념을 설명할 때 getter와 setter가 있으면 프로퍼티고 없으면 필드라고 하는데 그렇다기에는 조금 의미가 빈약하다는 생각이 들어 조금 더 찾아보았다.

 

먼저 자바 공식 문서에서 단어에 대한 정의를 찾아봤다.

https://docs.oracle.com/javase/tutorial/information/glossary.html

 

Glossary of Terms

A browser with JavaScript enabled is required for this page to operate properly. Glossary of Terms For simplicity, "the JavaTM platform" is called Java in the following definitions. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 100% Pure Java(TM) A S

docs.oracle.com

 

자바 공식 문서에서는 두 단어의 의미를 다음과 같이 정의하고 있다.

필드: 클래스의 데이터 멤버. 특별히 지정하지 않으면 필드는 스태틱이 아니다

프로퍼티: 유저들이 설정할 수 있는 객체의 특성

 

단어의 뜻으로 유추해 보기로는 필드는 어떤 데이터를 담는 느낌이고 프로퍼티는 값이 변하는 느낌이 든다.

 

추가적으로 스택오버플로우나 여러 블로그, 기사들을 살펴본 결과 둘의 차이는 필드는 클래스 내에 있는 변수이고 프로퍼티는 getter와 setter가 붙어 수정이 가능한 필드라는 것이었다.

 

둘을 뭔가 엄격한 차이를 가지고 구분하지는 않았다. 이는 데이터베이스에서 튜플과 인스턴스의 차이같은 느낌이다. 즉 개념적인 느낌이라는 것이다. 

 

필자가 이해하기로는 프로퍼티는 객체의 속성을 나타내는 요소로서 값을 얻거나 설정할 수 있는 것으로 이해했고 필드는 값을 저장하는 클래스 내의 변수로 이해했다.(많은 설명에서 변수는 private이어야 한다고 한다) 쉽게 생각해서 getter, setter가 있으면 property 없으면 필드라고 생각하면 될 것 같다.