❗ static 메서드 : 메서드 앞에 static 메서드가 붙은 것(=클래스 메서드)
👀 인스턴스메서드
- 인스턴스 생성 후, '참조변수.메서드이름()'으로 호출
- 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv) 사용가능
👀 static 메서드(클래스메서드)
- 객체생성없이 '클래스 이름.메서드이름()'으로 호출
- 인스턴스 멤버(iv,im)와 관련없는 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv) 사용불가
=> iv(인스턴스 변수) 사용여부에 따라 구분
class MyMath2 {
long a, b;
long add() { //인스턴스 메서드(iv사용)
return a + b; // a,b -> 인스턴수변수(iv)
}
static long add(long a, long b){ //클래스메서드(static메서드) // long a,long b->지역변수
return a + b; // a,b -> lv(지역변수)
}
}
class MyMathTest2{
public static void main(String args[1]}]
System.out.println(MyMath2.add(200L,100L); //클래스메서드 호출 // 클래스이름.메서드이름
MyMath2 mm = new MayMath2(); //인스턴스 생성
mm.a = 200L;
mm.b = 200L;
System.out.prinln(mm.add()); //인스턴스 메서드 호출 // 객체생성 후 호출할 수 있음
}
}
❓ static을 언제 붙여야 할까?
▶static 메서드는 인스턴스 변수(iv)를 사용할 수 없다.
Class TestClass2{
int iv; //인스턴스 변수, 객체 생성 후 사용가능
static int cv; //클래스 변수, 언제나 사용가능
void instanceMethod(){ // 인스턴스 메서드, 객체 생성후 호출가능
System.out.println(iv); // 인스턴스 변수를 사용할 수 있다.
System.out.println(cv); // 클래스 변수를 사용할 수 있다.
}
void instanceMethod(){ // static 메서드
System.out.println(iv); // 인스턴스 변수를 사용할 수 없다. why? 인스턴스 변수는 객체 생성후 호출 가능하기 때문
System.out.println(cv); // 클래스 변수를 사용할 수 있다.
}
}// end of class
▶static 메서드는 인스턴스 메서드(iv)를 호출할 수 없다.
'자바의 정석 > 객체지향' 카테고리의 다른 글
[객체지향] 생성자(constructor) (0) | 2022.12.02 |
---|---|
[객체지향] 오버로딩(overloading) (0) | 2022.12.02 |
[객체지향] 기본형 매개변수 (0) | 2022.12.01 |
[객체지향] 호출 스택(call stack) (0) | 2022.12.01 |
[객체지향] return문 (0) | 2022.11.30 |