250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 혼공
- types
- 혼공자바
- 접근 제어자
- 0 시작
- java
- entrySet
- 네트워크
- Spring Data JPA
- 티스토리챌린지
- 자율학습
- Lazy loading
- Wildcard
- Access Modifier
- dotnet
- 인프런
- literal
- Proxy Object
- 접근제어자
- noncluster index
- 오블완
- HashMap
- Interface
- 스프링 부트 3
- 혼공컴운
- 나도코딩
- 인터페이스
- 혼공학습단
- Functional Interfaces
- cluster index
Archives
- Today
- Total
지금을 사는 사람
필드(Field)와 프로퍼티(Property)의 차이 본문
728x90
소개:
프로그래밍에서 변수와 값의 저장은 필드와 프로퍼티라는 두 가지 주요 개념을 통해 이루어집니다. 이 블로그에서는 필드와 프로퍼티의 차이점과 각각의 특징, 활용 방안에 대해 알아보겠습니다.
1. 필드(Field)란?
- 개념:
- 클래스나 구조체 내부에 선언된 변수를 의미합니다.
- 주로 객체의 상태를 나타내거나 클래스 내부에서만 접근 가능한 데이터를 저장하는 데 사용됩니다.
- 특징:
- 주로 private 또는 protected 접근 제어자로 선언되어 해당 클래스 내부에서만 직접 접근이 가능합니다.
- 간단한 데이터 저장에 사용되며, 외부에서 직접 접근하는 것이 권장되지 않습니다.
public class MyClass {
private int myField;
public void setMyField(int value) {
myField = value;
}
public int getMyField() {
return myField;
}
}
2. 프로퍼티(Property)란?
- 개념:
- 필드의 값을 읽고 쓰는데 사용되는 메서드(getter와 setter)를 가진 멤버입니다.
- 외부에서 필드에 접근할 때 메서드를 통해 간접적으로 접근하는 패턴을 가집니다.
- 특징:
- 필드에 대한 접근을 메서드로 래핑하여 데이터의 캡슐화를 지원합니다.
- 필드 값을 가져오거나 설정하는 로직을 더 추가할 수 있어 유연한 제어가 가능합니다.
public class MyClass {
private int myProperty;
public int getMyProperty() {
return myProperty;
}
public void setMyProperty(int value) {
// 추가적인 로직 수행 가능
myProperty = value;
}
}
3. 필드 vs 프로퍼티:
- 접근 제어:
- 필드는 직접적으로 접근이 가능하므로 외부에서의 제어가 어려울 수 있습니다.
- 프로퍼티는 메서드를 통해 간접적인 접근을 제공하여 데이터를 더 효과적으로 제어할 수 있습니다.
- 캡슐화:
- 필드는 데이터를 감추지 않고 직접 노출합니다.
- 프로퍼티는 필드를 감싸고 있는 메서드를 통해 데이터를 감출 수 있습니다.
- 확장성:
- 프로퍼티는 필드에 대한 접근에 추가적인 로직을 수행할 수 있어 더 많은 확장성을 제공합니다.
4. 사용 시 고려 사항:
- 간단한 데이터 저장:
- 간단한 데이터 저장에 필드를 사용합니다.
- 캡슐화와 로직 추가:
- 데이터에 대한 더 많은 제어와 캡슐화가 필요한 경우 프로퍼티를 사용합니다.
- 언어에 따른 관례:
- 언어에 따라 필드와 프로퍼티의 사용 관례가 다를 수 있습니다.
5. 결론
필드와 프로퍼티는 데이터를 저장하고 접근하는 데 사용되는 주요한 프로그래밍 요소입니다. 필드는 간단한 데이터 저장에 적합하며, 프로퍼티는 데이터에 대한 접근을 더 세밀하게 제어하고 로직을 추가하는 데 유용합니다. 선택은 사용되는 언어와 프로그램의 요구사항에 따라 달라질 수 있습니다.
728x90
'CS' 카테고리의 다른 글
클래스, 객체, 인스턴스 (Class, Object, Instance) (1) | 2023.12.27 |
---|---|
UML(Unified Modeling Language) 언어 (0) | 2023.12.22 |
도메인 주도 설계 (Domain Driven Design) (0) | 2023.12.20 |
배열이 0부터 시작하는 이유 (0) | 2023.12.12 |