더북(TheBook)

47.4 캡슐화를 사용하여 좀 더 세련된 프로그램 만들기

캡슐화를 사용하여 좀 더 세련된 프로그램을 만들 수 있습니다. 앞에서 필드는 private으로 해당 클래스 내에서 꽁꽁 숨겨야 한다고 몇 번이나 강조했습니다. 필드는 자동차 부품 역할을 하기에, 외부에서 보이는 것보다는 내부에서만 사용하도록 명시하는 것이 가장 좋기 때문입니다. 이를 프로그램 코드에도 적용하면 프로그램을 좀 더 세련되게 표현할 수 있습니다. 이 예제에서는 필드를 만들고 외부에 공개할 때 public한 메서드 또는 public한 속성 등으로 공개하는 식으로 캡슐화를 구현하는 예제를 만들 것입니다. 다음 내용을 입력한 후 실행해 보세요.

캡슐화 사용: EncapsulationNote.cs

using System;

namespace EncapsulationNote
{
    public class Person
    {
        //① 필드
        private string name;
        //② 메서드: public 메서드 또는 속성으로 외부에 공개
        public void setName(string n) => name = n;
        public string GetName() => this.name;
    }

    class EncapsulationNote
    {
        static void Main()
        {
            //ⓐ person 개체 생성
            Person person = new Person();
            //ⓑ Set 메서드로 필드 설정
            person.SetName("C#");
            //ⓒ Get 메서드로 필드 공개
            Console.WriteLine(person.GetName());
        }
    }
}

실행 결과

C#

Person 클래스의 인스턴스를 생성한 후 name 필드에 접근하려고 시도하면 private으로 설정했기에 다음 오류가 발생합니다.

> Person person = new Person();
> person.name = "Error";
(1,8): error CS0122: 보호 수준 때문에 'Person.name'에 액세스할 수 없습니다.

외부에서 필드에 접근하지 못하고 필드 값에 접근할 때는 public 메서드 또는 속성으로만 접근하게 하여 클래스 내 필드 값을 보호할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.