maketree static
main함수가 static이니까 maketree도 static으로 맞춰준다고 하셨는데 구체적인 이유를 알 수 있을까요?
답변 2
7
당장 크게 중요하진 않지만 처음 배울 땐 개념이 헷갈리는 부분인데,
static 함수에서 static이 아닌 함수를 호출하려면
해당 객체를 만들어서 사용해야 하기 때문입니다.
(일단 static을 제거해보면 바로 에러가 나는 것을 확인할 수 있을거에요)
static이라 함은 그 클래스에 유일한 '공용' 함수라는 얘기고,
어떤 특정 객체에 종속적이지 않다는 의미이기도 합니다.
반대로 static이 아닌 일반 함수는 특정 '객체'에 종속적이기 때문에
내부 멤버 변수에 접근할 수 있다는 특징이 있습니다.
예를들어 스타크래프트 마린을 설계할 때
각 마린마다 체력이 다를테니
int hp는 내부 멤버 변수로 만들고, SetHp도 static이 아닌 함수로 만들겠죠.
그러면 Marine m = new Marine();
을 해준 다음에 m.SetHP() 등으로 사용할 수가 있습니다.
반면 모든 마린들이 공통적으로 갖는 특징은
특정 객체에 종속적이지 않게 만드는 것을 고려할 수 있는데,
가령 마린이 노래 부르는 함수 Sing()은 모든 마린이 공통적으로 사용할테니
static으로 만든다고 가정해봅시다.
이렇게 되면 Sing()는 static 함수로 만들어야 하고,
Marine.Sing()으로 바로 사용하게 됩니다. (Marine m = new Marine 필요 없음)
특정 객체 Instance에 종속적이냐 아니냐에 따라 static 사용 여부가 갈리는데,
어찌됐건 main함수는 static이라서 어떠한 객체에도 종속적이지 않고
위치만 class Program 내부에 있을뿐입니다.
이 상태에서 MakeTree를 static이 아닌 함수로 만들어주면,
main 내부에서 호출이 불가능하고
정말 억지로 호출하려면 new Program() 형식으로 객체를 만들어서 사용할 수밖에 없게 됩니다.
0
답변 정말 감사해요 여태 Static의 의미는 아는데 언제 써야 할 지 몰랐는데 갈피를 잡은거 같습니다
말씀해주신걸 요약하면
Static은 해당 클래스의 Instance 없이 바로바로 사용할 수 있다(Instance에 독립적이다)
Non Static은 해당 클래스의 Instance가 있어야 접근이 가능하다(Instance에 종속적이다)
그리고 저 경우에서는 Static 함수인 main에서 non static 함수인 MakeTree를 부르려면, Program 클래스의 instance를 생성하는건..... 아무리봐도 이상하네요 ^^
항상 답변 빨리 해주셔서 감사합니다
게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다
0
170
2
글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들
0
87
1
NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요
0
66
1
parent를 Pos타입으로 만든 이유
0
74
1
콘솔창에 격자가 안나옴 미로 생성 X
0
133
1
격자 생성 안됨 무한루프
0
113
1
BFS 질문
0
143
2
격자 무한 출력
0
166
2
A* 의 PriorityQueue 관련 질문입니다
0
155
2
vscode에서 원그리기
0
179
1
환결설정 강의 원 그리기
0
122
1
15-17분
0
86
1
3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?
0
141
2
동적 배열 관련 질문입니다!
0
209
1
Big-o 표기법에서 시간 복잡도
0
167
1
7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다
0
151
1
트리구현연습 강의 질문있어요
0
142
1
창은 뜨는데 맵이 나타나지 않아요.
0
174
1
Ctrl F5 하면 나오는 창은 어디서 설정할까요??
0
271
1
void CalcPathFromParent(Pos[,] parent)에 대해서
0
202
2
NullReferenceException예외가 발생했을때 어떻게 해야하나요?
0
228
1
[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제
3
310
2
오른손 법칙에서 플레이어 점이 안 움직입니다
0
243
2
맵 만들기 오류
0
179
1





