Java
50. static메서드와 인스턴스 메서드 - 패스트캠퍼스 백엔드 부트캠프 3기
gkss2tpt
2024. 12. 20. 15:11
1. static 메서드와 인스턴스 메서드
class MyMath2 {
long a, b;
// (iv사용하면 인스턴스 메서드)
long add() { // 인스턴스 메서드
return a + b; // 인스턴스 변수(iv)사용
}
// (iv를 사용하지 않으면 클래스 메서드)
static long add(long a, long b) { // 클래스 메서드(static 메서드)
return a + b; // 매개변수(지역변수) 사용
}
}
- 인스턴스 메서드
- 인스턴스 생성 후 '참조변수.메서드이름()'으로 호출
- 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv) 사용가능
- static 메서드(클래스메서드)
- 객체생성없이 '클래스이름.메서드이름()'으로 호출
- 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv) 사용불가
public static void main(String[] args) {
System.out.println(MyMath2.add(200L, 100L); // 클래스메서드 호출
MyMath2 mm = new MyMath2(); // 인스턴스 생성
mm.a = 200L;
mm.b = 100L;
System.out.println(mm.add()); // 인스턴스메서드 호출
}
- static 메서드는 인스턴스 메서드(im)를 호출할 수 없다.
class TestClass {
void instanceMethod() {} // 인스턴스 메서드
static void staticMethod() {} // static 메서드
void instanceMethod2() { // 인스턴스 메서드
instanceMethod(); // 다른 인스턴스 메서드를 호출한다.
staticMethod(); // static 메서드를 호출한다.
}
static void staticMethod2() { // static 메서드(객체 생성없이 호출 가능하기에 im이있을지 모름)
instanceMethod(); // 에러 인스턴스메서드를 호출할 수 없다.
staticMethod(); // static 메서드는 호출 할 수 있다.
}
}