static 메서드와 instance 메서드

essential·2023년 5월 25일

객체 지향

목록 보기
12/40

instance 메서드

  • instance 생성 후 ‘참조변수.메서드이름()’으로 호출
  • instance 멤버 (iv,im) 와 관련된 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수(iv) 사용가능

static 메서드 (class 메서드)

  • 객체 생성 없이 ‘class 이름.메서드이름()’으로 호출
    • ex) Math.random(),Math.round() 객체 생성X
  • instance 멤버(iv,im)와 관련 없는 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수(iv) 사용 불가
class MyMath2 {
	long a, b;
	
	long add() { // 인스턴스 메서드
				return a + b; // iv
	}
	
	static long add(long a, long b) { //클래스 메서드(static 메서드)
					return a + b; // lv
	}

}

class MyMathTest2 {
	public static void main(String args[]) {
				System.out.println(MyMath2.add(200L,100L);
				MyMath2 mm = new MyMath(); //인스턴스 생성
				mm.a = 200L;
				mm.b = 100L;
				System.out.println(mm.add()); //인스턴스 메서드 호출

// 둘의 차이는 iv 사용 여부
// 객체는 iv 의 묶음

static 을 언제 붙여야 할까?

  • 속성(멤버 변수) 중에서 공통 속성에 static 을 붙인다.
  • 인스턴스 멤버(iv, im)을 사용하지 않는 메서드에 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 
  • static 메서드는 인스턴스 메서드(im)를 호출 할 수 없다.
class TestClass {
			void instanceMethod() {} // 인스턴스 메서드
			static void staticMethod() {} // static 메서드
			
			void instanceMethod2() { // 인스턴스 메서드
						instanceMethod(); // 다른 인스턴스 메서드를 호출 한다.
						staticMethod(); // static 메서드를 호출 한다.
			}

static void staticMethod2(); { // static 메서드 
		instanceMethod();  // 에러!! 인스턴스 메서드를 호출할 수 없다.
		staticMethod();  // static 메서드는 호출할 수 있다.
		}
}

Q. static 메서드는 static 메서드 호출 가능?

  • 호출 가능

Q. static 메서드는 인스턴스 변수 사용 가능?

  • 불가능!!!iv,im 불가능

Q. static 메서드는 인스턴스 메서드 호출 가능?

  • 불가능!!! iv,im 불가능

Q. 왜? static 메서드는 인스턴스 멤버를 쓸 수 없나요?

  • static 메서드 호출시 객체(iv묶음) 가 없을 수도 있어서
profile
essential

0개의 댓글