... | ... | @@ -43,3 +43,59 @@ class Book |
|
|
}
|
|
|
```
|
|
|
|
|
|
### 정적 멤버, 인스턴스 멤버
|
|
|
|
|
|
```c#
|
|
|
class Dog
|
|
|
{
|
|
|
static public int CountOfInstance; //Dog 클래스의 총 인스턴수 개수를 세기 위한 정적 필드
|
|
|
public string _name;
|
|
|
|
|
|
public Dog(string name)
|
|
|
{
|
|
|
CountOfInstance++; //객체가 생성될 때 CountOfInstance에 1씩 더해준다.
|
|
|
_name = name;
|
|
|
}
|
|
|
|
|
|
public static void PrintBark()
|
|
|
{
|
|
|
Console.WriteLine(CountOfInstance + " 마리 개가 짖습니다.");
|
|
|
//정적 메서드 또한 호출 시 Dog.PrintBark() 으로 호출한다. 정적 메서드 안에서는 인스턴스 멤버에 접근 불가
|
|
|
}
|
|
|
|
|
|
public static void Main()
|
|
|
{
|
|
|
Console.WriteLine(Dog.CountOfInstance);
|
|
|
|
|
|
Dog blackDog = new Dog("검둥개");
|
|
|
Dog whiteDog = new Dog("백구");
|
|
|
|
|
|
Console.WriteLine(Dog.CountOfInstance);
|
|
|
//CountOfInstance가 인스턴트 필드였다면 인스턴스 단위로 변수를 가지고 있기 때문에 총 인스턴스 개수를 셀 수 없다.
|
|
|
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
특정 클래스의 인스턴스를 의도적으로 단 한 개만 만들고 싶은 경우에는
|
|
|
```c#
|
|
|
class Dog
|
|
|
{
|
|
|
public static Dog KingDog = new Dog("왕개");
|
|
|
public string _name;
|
|
|
|
|
|
private Dog(string name) //생성자를 private으로 해놓으면 다른 곳에서 객체 생성 불가
|
|
|
{
|
|
|
_name = name;
|
|
|
}
|
|
|
|
|
|
public void Bark() //이 메소드를 쓰려면 Dog.KingDog.Bark() 이런식으로 호출 가능하다.
|
|
|
{
|
|
|
//멍멍
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|