스타크래프트 게임에서 질럿을 뽑아보자
프로토스라는 패키지 안의 여러 건물과 유닛의 클래스가 존재한다
그 중 유닛인 질럿과
질럿의 업그레이드 건물 포지
질럿 생산 건물인 게이트 웨이의 관계를 이용하여 static 을 설명가능하다
질럿은 게이트 웨이에서 생산가능하며 생산 시 명령은 다음과 같다
질럿 질럿1 = new 질럿;
질럿이라는 객체의 클래스를 보면 다음과 같다
class 질럿 {
name : 질럿;
attack : 16;
hp : 100;
shield : 60;
}
non-static 이 아닌 방식으로 attack을 높이려면
일단 new 질럿으로 생성해서 각각의 질럿들을(=인스턴스들) 만들어 하나씩 수정 할 부분의 데이터를 고치게 되지만
non-static 의 경우
class 변수 = new class();
변수.method(); 형태로 호출
질럿1 {
String name : 질럿;
int attack : 16+2; // 각 질럿 개체 마다 수정을 해야한다
int hp : 100;
int shield : 60;
}
질럿2 {
String name : 질럿;
int attack : 16+2;
int hp : 100;
int shield : 60;
}
하나하나 고치는 것이 손이가고 효율이 좋지 않으니 아예 질럿의 설계도 값을 공유하도록 바꿔버리는게 static 이다
즉, 포지에서의 공격력 업그레이드 명령을 통해서 찍어내는 질럿 class 의 공격력 값을 공유하게 만드는 것이 static 이다
static 의 경우
객체 생성하지 않고
class.method(); 형태로 호출
class 질럿 {
String name : 질럿;
int attack : 16+2; // 클래스의 값을 바꿔버리면 추후 찍어낼 인스턴스들도 같은 값을 가지게 된다
int hp : 100;
int shield : 60;
}
static 은 클래스의 데이터 값에만 연관있으므로 따로 new를 통해 객체를 생성하지 않아도 된다
즉, static 을 통해서 변수를 바꾸면 해당 클래스의 모든 객체가 같은 변수 값을 갖도록 효율적으로 관리할수있다
static 메소드의 경우 자바 실행과 함께 로딩되어진다. 메인메소드 보다 먼저 로딩된다 는 특징이 있다
'개발 노트 > 기초 지식' 카테고리의 다른 글
[java] 상속 extends (0) | 2022.04.25 |
---|---|
[java] 접근제어자 (0) | 2022.04.22 |
[java] 데이터 타입의 형변환, 음수의 표현 (0) | 2022.04.18 |
[java] 구구단 강의에서 Integer.parsInt 를 쓴 이유 (0) | 2022.04.16 |
[java] nextLine 과 nextInt 의 차이, token (0) | 2022.04.15 |
댓글