JAVA

객체지향 static 메서드와 instance 메서드

연93 2022. 9. 25. 11:15

 

class Math2{
long a, b;

long add() { //인스턴스 메서드
	return a+b;
}

static long add(long, longb) { //클래스 메서드(static 메서드)
	return a + b;
    }
}

호출

class Math2{
	public static void main(String arg[]){
    System.out.println(Math2.add(200L,100L); 클래스메서드 호출 '클래스이름.메서드'
    Math2 mm = new Math2(); // 인스턴스 생성 (iv 생성)
    mm.a = 200L;
    mm.b = 100L;
    System.out.printl(mm.add()); //인스턴스 메서드 호출 (iv로 작업)
  • 인스턴스 메서드
  • 인스턴스 생성 후 '참조변수.메소드()'로 호출
  • 인스천스 멤버(iv, im)와 관련된 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수(iv) 사용가능
  • *인스턴스 변수는 class 전체사용*

 

  • static 메서드 (클래스 메서드)
  • 객체생성없이 '클래스이름.메서드이름()'으로 호출
  • 인스턴스 멤버(iv,im)와 관련없는 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수(iv)사용불가
  • *static은 지역변수 메소드 내에서만 사용*

**객체는 iv의 묶음**

***메서드간 호출***

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

결론 static 메서드는 인스턴스 메서드를 호출할수없다.