용어정리
[c#]static 정적 변수, 정적 메서드 , 정적 클래스
youcheachae
2025. 2. 24. 23:03
static 키워드를 사용하는 객체 처음 사용될 때 한번 할당되고, 프로그램이 끝날 때까지 메모리를 유지한다. 사용할 때 같은 메모리를 참조한다. 즉 정적이다.
반대로 동적인 객체는 사용할 때 마다 메모리를 사용하고, 사용이 끝나면 메모리를 해제한다.
📝 정적 변수
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
// 정적변수
// 클래스명.변수 < 로 접근
Cinema.person += 1;
Cinema cinema = new Cinema();
// 오류 : 인스턴스화 하면 정적 변수가 포함되지 않는다
// 정적 멤버는 클래스에 속하는 것이지 인스턴스에 속하는 것이 아님
cinema.person
}
public class Cinema
{
// 정적 변수
public static int person = 0;
public Cinema() { }
}
□ 정적으로 선언된 변수는 클래스명.변수명 으로 접근할 수 있다.
□ 정적 변수가 포함된 클래스를 인스턴스화 하면 정적 변수는 포함되지 않는다.
📝 정적 클래스
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
// 정적 클래스
Animal.animalAge += 1;
Animal.Setting();
}
public static class Animal
{
// 오류 : 정적 클래스에 인스턴스 변수를 선언할 수 없다
public int age = 0;
// 오류 : 정적 클래스에 인스턴스 메서드를 선언할 수 없다
public void Func() { }
// 정적 변수
public static int animalAge = 5;
// 정적 메서드
public static void Setting() { }
}
□ 정적으로 선언한 클래스의 필드와 메서드는 클래스명.변수명/ 클래스명. 함수명으로 접근할 수 있다.
🔖 정적선언을 할 때 주의해야할 점
1. 정적 클래스는 인스턴스화 할 수 없다.
2. 정적인 클래스는 정적인 변수와 메서드만 가질 수 있다.
📝 정적 메서드
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
// 정적 메서드
Food.Eat();
Food temp = new Food();
// 오류 : 인스턴스화 하면 정적 메서드는 포함되지 않는다
temp.Eat()
}
public class Food
{
static public void Eat() { }
}
□ 정적으로 선언된 함수는 클래스명.변수명 으로 접근할 수 있다.
□ 정적 메서드가 포함된 클래스를 인스턴스화 하면 정적 변수는 포함되지 않는다.