본문 바로가기
C#

정적 변수 + 정적 함수

by imagineer_jinny 2021. 7. 13.

static: 모든 오브젝트들이 공유하는 단 하나의 변수

 

static 왜 필요해?

전체 Dog 수를 count 하고 싶을 때, 그냥 Dog class에 넣어버리면 전체 수 count 할 수 없을 뿐만 아니라 각각 개체들이 다 count를 부르기 때문에 매우 비효율적.

count는 모든 오브젝트들이 공유해야함.  하지만 개별 오브젝트이기 때문에 각각 count 정보가 공유가 안됨.

따라서 모든 오브젝트들이 공유할 수 있는 변수가 필요함.

count 라는 변수를 모든 오브젝트에게 찍어내지 않고 모든 개별 오브젝트가 단 하나의 count를 사용하게 하는 것.

즉 count 라는 변수가 하나의 클래스 안에 실존하고 그 하나의 count를 모든 오브젝트들이 공유하면 되는 것.

 

<각각 count 소유>

<count 하나만>

 

static : dynamic의 반댓말

dynamic은 실시간으로 오브젝트가 찍혀나올때마다 같이 찍혀나온다는 의미.

static은 오브젝트가 찍어낼 때 같이 찍혀나올 수 없다는 뜻. 처음부터 정적으로 박혀있음.

static은 오브젝트를 초월해서 모든 오브젝트들이 공유하는 단 하나만 존재하는 변수

앞에 static을 붙이면 오브젝트들에게 개별로 존재하지 않고 모든 오브젝트들이 공유하는 단 하나의 변수가 됨.

 

static을 사용하는 경우는, 

count라는 변수는 개랑 관련이 있음. 개의 총 개수니까.

하지만, 개별 오브젝트가 가지긴 어색함

개 오브젝트가 스스로 전 세계에 존재하는 모든 개의 개수를 알고 있는 것은 어색함.

이 클래스와 관련이 있지만 개별 오브젝트가 스스로 알고 있기엔 어색한 정보는 static을 사용할 수 있음.

 

 

static은 함수에도 사용 가능

static을 함수로 사용하는 경우는 개별 오브젝트와 상관 없이 모든 친구들이 동시에 사용할 수 있는 경우

 

즉, 개별 오브젝트에 묶여있지 않음 (ShowAnimalType)

그래서 이런 것들은 오브젝트를 거치지 않고 쓸 수 있음

 

<Dog.cs>

<Test.cs>

static이 붙은 애들은 클래스 뒤에 . 찍어서 쓸 수 있음.

개별 오브젝트가 아니기 때문에 Dog alan 등과 같이 선언해서 쓸 필요도 없음.

'C#' 카테고리의 다른 글

상속 + 다형성, 집합  (0) 2021.07.18
리스트(List)  (0) 2021.07.13
오버로드  (0) 2021.07.13
벡터 연산 기초  (0) 2021.07.12
OOP(Object-Oriented Programming) 언어  (0) 2021.06.18

댓글