김조성준 2023. 7. 12. 23:21

Static을 변수나 메서드 앞에 붙여 정적으로 만들 수 있다. 그렇게 되면 객체가 아닌 클래스에 소속되게 된다.

class Car{
	static int cnt=0;
    private int num=1;
    private string name;
    
    static public void CW(){
    Console.WriteLine(cnt); // 가능
    Console.WriteLine(num); // 불가능
    }
    private Car(stirng name){
    	this.name=name;
	}
    
    static Car(){
    	NewCar = new Car("새 차"); // 인스턴스 메서드 사용 가능
    }
}
  • 인스턴스의 타입 전체에 걸쳐 전역적으로 적용되는 필드, 메서드, 생성자를 정적 멤버라고 한다.
  • 전역적으로 사용하기 위해선, Static 예약어를 붙여 사용해야 하며, 이를 이용한 대표적인 예는 싱글톤이다.
  • 싱글톤은 인스턴스가 단 하나만 존재하는 것을 의미하고 정적 메서드 안에서는 인스턴스 멤버에 접근 할 수 없다.
  • 또한 정적 메서드는 new로 할당된 객체가 없는 상태에서도 호출이 되며, 정적 필드는 사용이 가능하다.
  • 정적 생성자는 클래스에 단 하나만 존재할 수 있고, 단 한번만 실행이 되고 어떤 코드보다도 우선적으로 실행이 된다. (매개변수를 포함할 수 없다.)