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 메서드는 호출 할 수 있다.
    }
}