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 |
댓글