728x90
반응형
static(클래스) & 인스턴스 메서드
인스턴스는 참조변수를 써야하고 클래스 메서드는 객체 생성없이 클래스 변수 이름만으로 호출가능
클래스 메서드 예시: Math.random, Math.round
public class Math{
int a; //인스턴스 변수: 모든 클래스, 즉 Math 클래스 전체에 적용되는 인스턴스 변수
int b;
int add() {
return a + b;
}
static int add(int a, int b) { //클래스 변수: 하단의 클래스까지만 적용
return a + b; // 지역변수
// 지역변수를 사용하고 iv(instance variable = 인스턴스 변수)를 사용하지 않을 때
// static을 붙여 class 변수로 만듬
}
}
class MathMain{
public static void main(String[] args) {
Math math = new Math(); // 인스턴스 변수를 선언하기 위해 객체를 호출해야함
math.a = 100; //각각의 int 변수에다 숫자 지정
math.b = 200;
System.out.println(math.add()); // return 값인 add를 호출하여 두 값을 더함
System.out.println(Math.add(1, 3));
// 클래스의 변수이기 때문에 객체생성없이 클래스 호출만으로도 사용가능
}
}
static을 붙여서 클래스 메서드로 사용하는 기준:
인스턴스 변수들이 공통적인 값을 유지해야 하는 경우 static을 붙여 class 메서드로 만들고 그 객체를 선언하지 않고 바로 사용 가능하게 만든다.
예시:
스타크래프트에서 탱크를 생산한다고 가정하자. 탱크를 생산할때 팩토리에서 나오는 탱크의 최대 HP는 같게해야하므로 static을 붙여 그 인스턴스 변수에 한해 클래스 메서드로 만든다.
다만 전투가 벌어질 때 탱크의 각각의 HP 관리는 인스턴스 메서드로 지정해야 다른 탱크들이 공격받을 때 다른 탱크의 HP가 줄어드는 것을 방지할 수 있다.
요약:
전체 클래스에 대해 값을 유지해야 하는 변수들은 클래스 메서드로 만들고 각각의 고유의 값을 가져야 하는 변수들은 인스턴스 메서드로 만든다.
728x90
반응형
'Java > 자바의정석 기초편' 카테고리의 다른 글
자바 학습 & 복습 14일차 - 메서드 생성 예시문제 (0) | 2022.01.28 |
---|---|
자바 학습 & 복습 12일차 - 매서드간의 호출 & 참조, 오버로딩(overloading) (0) | 2022.01.26 |
자바 학습 & 복습 10일차 - return 문 & 기본형, 참조형 매개변수, 참조형 반환타입 (0) | 2022.01.24 |
자바 학습 & 복습 10일차 - 메서드 선언부 & 구현부 (0) | 2022.01.24 |
자바 학습 & 복습 10일차 - 클래스 정의 (0) | 2022.01.24 |