안녕하세요 삽잡이입니다.
이번 시간에는 이전 시간에도 두어번 언급한 Setter/Getter에 대해서
그리고 생성자에 대해서 알아보겠습니다.
모든 필드는 private 형식으로 만들어져있습니다.
즉, 외붸서 마음대로 접근하지 못하게 하려는 의도입니다.
많이 알면 많이 알 수록 서로 힘들지요...
그래서 조금만 알자고 '캡슐화'전략을 쓰는 것입니다.
그런데 필드 값을 업데이트, 참조를 하기 위해서는
C#에서는 property 즉, 필드를 읽을 Getter/Setter를 사용합니다.
Getter와 Setter는 인터페이스입니다.
객체는 클래스가 됬건 객체가 됬건 두 가지 내용물로 이루어져있지요...
늘 반복해서 말씀하지만 '속성'과 '메서드'입니다.
속성은 상태, 메서드는 기능을 나타내지요...
속성과 메서드는 객체의 상태이자 기능이 되는 것입니다.
필드가 C#에서는 속성, 메서드는 메서드로 불리는데,
이 메서드들에는 외부에 공개된 기능과 공개되지 않는 기능으로 나눌 수 있습니다.
공개된 기능과 공개되지 않는 기능...
사실은 기능이 공개되는 것이 아니라 기능의 '시그니처'가 공개되는 것입니다.
따라서 메소드의 시그니처가 공개되는 놈, 공개 되지 않는 놈으로 나눌 수 있지요...
Getter/Setter는 공개되는 메서드에 해당합니다.
이 공개되는 메서ㄷ에는 실제로 메서드가 아닌 시그니처가 공개되는 것이지요...
그리고 이놈을 가리켜 클래스의 인터페이스라고 부릅니다.
이 수많은 메서드들 중에 메서드가 공개된 놈의 시그니처를 가리켜
클래스의 인터페이스라고 부릅니다...
그리고 객체의 인터페이스라고 부르고요...
메서드의 시그니처가 공개되는 메서드와 공개되지 않는 메서드 중에서
필드를 외부에서 읽고 (Getter), 쓰기(Write)위해
공개된 인터페이스를 Getter, Setter라고 부르며 C#에서는 속성이라고 부르는 것입니다.
속성은 따라서 외부에 공개되는 public으로 이루어져있습니다.
C#에서는 이 Getter와 Setter 속성의 가시성을 각각 다르게 설정할 수 있습니다.
또한 속성을 만들어놓고 초기화하지 않는다면,
기본 형식은 모두 다 '0'으로,
참조 형식은 모두 다 'NULL'로 초기화됩니다.
C#이나 Java는 클래스 내부에서 변수를 선언함과 동시에 초기값을 지정해줄 수 있습니다.
즉, 정의와 통시에 초기화를 할 수 있다 이겁니다.
C#에서는 이와 같은 형식의 초기화가 가능합니다.
하지만, C++의 문법에서는 불가능 했었습니다...
그런데 C#에서 컴파일러의 눈에는 이렇게 보입니다...
즉, int x, int y만 인식하고,
초기화할 때에 int x = 10, int y = 20;을 초기화 코드에다가 넣어준다는 것입니다.
뭐... 이렇게 자동으로 만들어진다고 생각하시면 됩니다.
만약, 이런 경우는 어떨까요?
우선 초기화 시 10, 20으로 초기화를 해뒀다가
다시 생성자에 있는 값인 20, 10으로 초기화를 합니다.
그런데, struct는 기본 생성자를 만들 수 없습니다..
왜냐하면 예약되어있기 때문입니다.
왜 그런 문법을 만들었을까요?
구조체는 new 없이도 생성이 가능합니다.
왜냐하면, 기본 생성자를 호출하기 때문입니다.
구조체는 기본 생성자가 약속되어있기 때문에 new 없이도 생성이 가능한 것입니다.
이상 삽잡이였습니다!
'삽질의 현장 > - .NET' 카테고리의 다른 글
#029_닷넷(.NET)_.Net Framework 기본 - class & struct 응용 (0) | 2015.10.27 |
---|---|
#028_닷넷(.NET)_.Net Framework 기본 - 클래스와 구조체의 용도 (0) | 2015.10.27 |
#026_닷넷(.NET)_.Net Framework 기본 - 접근 한정자 (0) | 2015.10.27 |
#025_닷넷(.NET)_.Net Framework 기본 - 여러가지 문법 (2) (0) | 2015.10.26 |
#024_닷넷(.NET)_.Net Framework 기본 - C# 여러가지 문법 (1) (0) | 2015.10.26 |