본문 바로가기

Languages/JAVA

[JAVA] 클래스의 모든 것 #2 - 클래스의 static

클래스를 알아봅시다! #2 😉


클래스에서 static 사용법을 알아봅시다!

[ 자바 클래스 링크 ]

1. [JAVA] 클래스의 모든 것 #1 - 클래스의 개념과 용도


 

public class MyUtil {
	// static 필드
	public static String version;

	//static 메소드
	public static void send() {
		System.out.println("전송합니다.");
	}
}

 

MyUtil이라는 클래스를 만들어줍니다.
MyUtil 클래스 안에는 static 필드인 version과 static 메소드인 send를 구현해주었습니다.


이제 main에서 호출법을 알아봅시다!

//MyUtil 클래스의 static 필드 참조해서 값 대입해보기
MyUtil.version="1.0"; 

//MyUtil 클래스의 static 메소드 호출하기 
MyUtil.send();

원래 클래스의 호출은 new로 객체를 만들어서 사용해야합니다.
하지만 static으로 생성된것은 static 영역에 따로 저장되어있기 때문에 객체를 생성하지 않아도 사용할 수 있습니다.


다른 예제를 보면서 다시 알아봅시다!

package test.mypac;

public class DarkTemplar {
   //필드
   
   /*   [체력]
    *  
    *  필드명 : hp
    *  data type : int
    *  non static  
    */
   public int hp=80;
   /*
    *  [공격력]
    *  
    *  필드명 : damage
    *  data type : int
    *  static 
    */
   public static int damage=40;
   
   //메소드
   
   //공격하는 메소드
   public void attack() {
      System.out.println(DarkTemplar.damage+" 의 공격력으로 공격합니다." );
   }
   //움직이는 메소드
   public void move() {
      System.out.println(this.hp+" 체력의 다크 템플러가 움직여요");
   }
}

DarkTemplar라는 클래스를 생성하여주었습니다. DarkTemplar는 게임안의 공격유닛인데 이 각각의 객체들의 체력은 같아야지만 공격력 업그레이드는 다같이 이루어져야하기때문에 데미지 필드는 static으로 만들었습니다.


DarkTemplar dark1 = new DarkTemplar();
DarkTemplar dark2 = new DarkTemplar(); 

//dark1의 체력을 10 감소 시키기 
dark1.hp-=10; 

//감소시킨후 move() 
dark1.move(); dark2.move();

//다크템플러의 공격력을 10증가 
DarkTemplar.damage+=10;

dark1.attack(); 
dark2.attack();

main에서 클래스를 사용하여봅시다.
dark1, dark2라는 객체를 만들어 주었습니다. 체력은 각각의 객체마다 따로 감소시키는 것을 볼 수 있습니다.
move 메소드도 static이 아니기 때문에 각각 따로 실행하는 것을 볼 수 있습니다.
demage필드는 static 영역에 있기때문에 DarkTemplar.demage를 사용합니다.