[C# 객체지향] 캡슐화

eunjin lee·2022년 6월 18일
0

C# 9.0 프로그래밍

목록 보기
2/50

캡슐화는 관련성 있는 데이터와 그 데이터를 다루는 메서드를 객체 안에 구현하고, 객체의 밖에서 알아야할 필요가 없는 내부 멤버는 숨기는 것을 일컫는다.



1. 접근 제한자

접근 제한자접근 혀용 범위
private클래스 내부만
protected클래스 내부와 파생 클래스만
public클래스 외부도
internal동일한 어셈블리 내
internal protected동일한 어셈블리 내 혹은 다른 어셈블리의 파생 클래스


- 접근 제한자를 생략하면, 클래스는 internal, 클래스의 멤버는 private으로 설정된다.


2. 정보 은닉

  • 필드를 public 선언하지 않는다.
  • 필드를 외부에서 접근해야 한다면, getter와 setter을 만들고 이 메서드를 public하게 둔다.


3. Property

  • C#은 getter와 setter을 편리하게 쓸 수 있도록 property를 제공한다.
  • 프로퍼티는 메서드의 특수한 변형에 불과하다. 컴파일러가 빌드할 때, 일반적으로 알고 있는 getter와 setter 메서드로 컴파일된다.


✍ 샘플 코드

namespace Pjt
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person();
            p.Name = "Tom";
            Console.WriteLine(p.Name);
        }
    }

    class Person
    {
        private string name;
        public string Name
        {
            get
            {
                Console.WriteLine("Getter Called."); 
                return name; 
            }
            set
            {
                Console.WriteLine("Setter Called"); 
                name = value; 
            }
        }

    }
}

✅ 결과

Setter Called
Getter Called.
Tom
  • set 구문에 있는 value는 예약어로, 프로퍼티에 대입되는 값이다.
  • p.Name은 p.name에 직접 접근하는 것이 아니라, 컴파일하며 생성되었을 get_Name이나 set_Name에 접근하는 것이다.

0개의 댓글