속성(Property)
2021. 6. 17. 22:33
728x90
우선, 속성으로 들어가기 전에 짚고 넘어갈 것이 있다.
Java는 getter, setter를 사용한 DTO(Data Transfer Object)를 활용하여 객체지향 프로그래밍을 하지만, C#은 속성 get, set을 사용하여 캡슐화하여 객체 지향 프로그래밍을 한다.
*캡슐화 : 한 class 안에 연관된 데이터를 묶고 정보를 숨겨서 class 자체를 캡슐처럼 만들기
[ 속성 ]
속성(Property) : class의 멤버변수 값을 읽기, 저장, 값 변경
- 변수는 읽기, 저장까지만 가능.
- 대상 : 접근 권한이 private, protected으로 선언된 멤버변수
- public으로 선언 -> 이미 외부로 노출되어있으니까 속성을 사용할 필요가 없음
- private으로 선언 -> 이 멤버변수 자체보다는 속성으로 노출시켜서 값 변경
- 형식 : 속성은 변수와 동일한 형태로 사용 (대입연산자, 연산을 동일하게 사용)
// 방법1
[접근한정자] 데이터형 속성명 { //속성을 외부에서 사용해야하므로 접근한정자는 public
get{ return 멤버변수; }
set{ 멤버변수 = value; } //value(값)를 지정해서 멤버변수에 저장.
}
// 방법2 : get, set 속성 안에 논리/처리 코드를 적용하기
private int number;
public int Number{
get{ return number; }
set{
if(value<0 || value>9) number = 0;
else number = value;
}
}
[ 속성 vs. 인덱서 ]
- 공통점 : 객체의 멤버 변수를 read, write함
- 차이점 : 속성은 변수, 인덱서는 배열 형태임
728x90
'C# > C# 문법' 카테고리의 다른 글
인덱서 (Indexer) (0) | 2021.06.17 |
---|---|
다형성 (Polymorphism) (0) | 2021.06.17 |
오버라이드(Override), 오버로드 (Overload) (0) | 2021.06.17 |
상속(Inheritance), 추상클래스(Abstract Class) (0) | 2021.06.17 |
파일 입출력 (0) | 2021.06.15 |