Java/JAVA의 정석_객체지향

Instance 메서드 VS Static 메서드

Jenny_yoon 2022. 10. 26. 13:09
728x90
반응형

* Instance 메서드

- 인스턴스 생성 후 '참조변수.메서드이름()'으로 호출

- 인스턴스 멤버(iv,im)와 관련된 작업을 하는 메서드

- 메서드 내에서 인스턴스 변수(iv) 사용가능

 

* Static 메서드 

- 객체생성 없이 '클래스이름.메서드()'으로 호출

- 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드

- 메서드 내에서 인스턴스 변수(iv) 사용불가

- 속성(멤버 변수) 중에서 공통 속성에 static을 붙인다.

static int width = 100;

- 인스턴스 멤버(iv, im)을 사용하지 않는 메서드에 static을 붙인다.

       long add()	      	{ return a+b; }	 //a,b는 인스턴스변수 //add()는 인스턴스메서드
static long add(long a, long b)	{ return a+b; }	 //a,b는 지역변수 //add는(~) static 메서드

- 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);	//에러!!! 인스턴스변수 사용불가x
          system.out.println(cv);	//클래스변수 사용가능
    }
}
728x90
반응형