(C#) 클래스 생성자, getter&setter, 속성(클래스 선언)

1. 클래스 선언

(수정자) 클래스 클래스명 { … }

다음 형식으로 클래스를 선언할 수 있습니다.

다음은 first_name, last_name, birth의 세 가지 속성을 가진 Person이라는 클래스와 Display() 함수를 메서드로 선언한 샘플 코드입니다.

class Person
    {
        private string first_name;
        private string last_name;
        private string birth;
        
        //default constructor
        public Person()
        {
            first_name = "";
            last_name = "";
            birth = "";
        }
        
        //Parammeterized constructor
        public Person(string f, string l, string b)
        {
            first_name = f;
            last_name = l;
            birth = b;
        }
        
        //Copy constructor
        public Person(Person p)
        {
            first_name = p.First_name;
            last_name = p.Last_name;
            birth = p.Birth;
        }
        
        //Properties
        public string First_name
        {
            get
            {
                return first_name;
            }
            set
            {
                first_name = value;
            }
        }
        public string Last_name
        {
            get
            {
                return last_name;
            }
            set
            {
                last_name = value;
            }
        }
        public string Birth
        {
            get
            {
                return birth;
            }
            set
            {
                birth = value;
            }
        }
        
        //Method
        public void Display()
        {
            Console.WriteLine( "My name is " + first_name + " " + last_name+".\n" +
                "My date of birth is "+birth+".");
        }
    }

필드를 선언할 때 다음 키워드를 사용할 수 있습니다.

1.비공개

클래스 내에서만 접근 가능

2. 공개

수업 안팎에서 접근 가능

3. 보호

클래스 또는 파생 클래스 내에서만 액세스 가능

4. 최종

편집할 수 없음

5.추상

명확한 정의 없이 선언됨

위의 샘플 코드의 경우 속성이 비공개로 선언되어 있기 때문에 Person 클래스 내에서만 액세스가 가능합니다.

표시 방법의 경우 공개로 선언됩니다. ObjectName.Display(); 다음과 같이 직접 사용할 수 있습니다.

2. 생성자의 선언

생성자는 개체가 생성될 때 개체를 초기화하는 데 사용되는 특수 메서드입니다. 항상 public 키워드와 함께 클래스 이름과 동일한 이름으로 정의되며 반환 유형이 없습니다. 클래스는 하나 이상의 생성자를 가질 수 있습니다.

#1 샘플 코드의 다음 부분은 생성자를 정의하는 부분입니다.

    //default constructor
    public Person()
    {
        first_name = "";
        last_name = "";
        birth = "";
    }

    //Parammeterized constructor
    public Person(string f, string l, string b)
    {
        first_name = f;
        last_name = l;
        birth = b;
    }

    //Copy constructor
    public Person(Person p)
    {
        first_name = p.First_name;
        last_name = p.Last_name;
        birth = p.Birth;
    }

위와 같이 생성자를 생성하는 방법에는 세 가지가 있습니다.

1. 기본 생성자

생성자를 호출할 때 전달되는 인자는 없으며, 이 생성자를 이용해 객체를 생성하면 생성자에 정의된 값으로 초기화된다.

2. 매개변수화된 생성자

초기화 값은 생성자에 인수로 전달됩니다. 이 생성자로 객체를 생성할 때 객체는 전달된 값으로 초기화됩니다.

3. 복사 생성자

또 다른 객체는 생성자에게 인자로 전달되며, 해당 생성자를 사용하여 객체가 생성되면 객체는 전달된 객체와 동일한 값으로 초기화됩니다.

3. Getter&Setter / 속성

클래스 외부에서 액세스하여 클래스 속성의 값을 읽거나 변경해야 하는 경우 해당 속성이 public이 아니면 액세스하지 못할 수 있습니다. 이 경우 값에 액세스하려면 getter 및 setter가 필요합니다.

예를 들어 위의 Person 클래스에서 출생 속성에 액세스하려면 다음과 같이 getter 및 setter를 정의하면 됩니다.

//getter
public string getBirth()
{
	return birth;
}

//setter
public void setBirth(string birth)
{
	this.birth=birth;
}

그리고 외부에서 출생 값을 읽을 때 ObjectName.getBirth();

값을 변경할 때 ObjectName.setBirth(“2001-01-01”); 이런 식으로 사용할 수 있습니다

하지만 C#에서는 getter 및 setter 함수 없이 속성이라는 속성을 사용하여 값에 액세스할 수 있습니다.하다.

속성은 다음과 같이 정의됩니다.

공개 유형의 속성

{

받다 {…}

문장 {…}

}

위의 Person 클래스 샘플 코드에서 다음 부분은 속성을 정의합니다.

    //Properties
    public string First_name
    {
        get
        {
            return first_name;
        }
        set
        {
            first_name = value;
        }
    }
    public string Last_name
    {
        get
        {
            return last_name;
        }
        set
        {
            last_name = value;
        }
    }
    public string Birth
    {
        get
        {
            return birth;
        }
        set
        {
            birth = value;
        }
    }

위와 같이 속성을 속성으로 정의하면 getter, setter 메소드를 사용하지 않고 속성으로 직접 접근이 가능하다.

Person p = new Person("John","Smith","2000-12-31");


p.Birth="2001-01-01"; //p.setBirth("2001-01-01"); 와 동일하다
//p.Birth는 p.getBirth()와 동일하다


C# 과정의 연습 코드

https://github.com/bwj2800/csharp-lab/tree/main/Week2

GitHub – bwj2800/csharp-lab: Microsoft C# 과정을 위한 랩 연습

Microsoft C# 과정을 위한 랩 연습. GitHub에서 계정을 생성하여 bwj2800/csharp-lab 개발에 기여하십시오.

github.com