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
