[자바의 정석]static메서드와 인스턴스메서드

이혜수·2023년 2월 27일
0
  • 인스턴스메서드
  1. 인스턴스 생성 후, '참조변수.메서드이름()'으로 호출
  2. 인스턴스 맴버(iv,im)와 관련된 작업을 하는 메서드
  3. 메서드 내에서 인스턴스 변수(iv) 사용가능
  • static메서드(클래스메서드)
  1. 객체(iv묶음) 생성없이'클래스이름.메서드이름()'으로 호출
  2. 인스턴스 맴버(iv,im)와 관련없는 작업을 하는 메서드
  3. 메서드 내에서 인스턴스 변수(iv) 사용불가
  • static을 언제 붙여야 할까?
    ㄴ속성(멤버변수) 중에서 공통속성에 static을 붙인다
    ㄴ인스턴스 멤버(iv,im)을 사용하지 않는 메서드(명령문 집합)에 static을 붙인다.

  • 메서드간의 호출과 참조

  1. static메서드는 인스턴스 변수(iv)를 사용할 수 없다.
class TestClass2{
	int iv;				// 인스턴스 변수 (객체생성 후 사용가능)
    static int cv;		// 클래스 변수 (언제나 사용가능)
    
    void instanceMethod() {	 	// 인스턴스 메서드 (객체 생성 후 호출가능)
    	System.out.println(iv);	//	인스턴스 변수를 사용할 수 있다.
    	System.out.println(cv); //	클래스 변수를 사용할 수 있다.
    
    }
    
	static void staticMethod()	{	// static메서드
    	System.out.println(iv);		// 에러!! 인스턴스 변수를 사용할 수 없다.
        System.out.println(cv);		// 클래스 변수는 사용할 수 있다.
   }

} // end of class
  
   

2.static메서드는 인스턴스 메서드(im)를 사용할 수 없다.

class TestClass{
	vide instabceMethod(){}			// 인스턴스메서드
    static void staticMethod() {}	// static메서드
    
    void instanceMethod2(){			// 인스턴스메서드
    	 instanceMethod();			// 다른 인스턴스메서드를 호출한다.
    	 staticMethod();			// static메서드를 호출한다.
     }									ㄴ 항상 OK
     
     static void staticMethod2(){	// static메서드
     	instanceMethod();			// 에러!! 인스턴스메서드를 호출할 수 없다.		
             ㄴ iv로 작업하는 메서드, 객체가 필요	
        staticMethod();				// static메서드는 호출 할 수 있다.
     }
 } // end of class
  
   
profile
성장하는 땅콩개발자 :)

0개의 댓글