static & instance 메서드

0
class MyMath2 {
	long a, b;
    
    long add() {  // 인스턴스 메서드
    	return a+b;
    }
    
    static long add(long a, long b) {  // 클래스 메서드(static 메서드)
    	return a+b;
    }
}
  • 인스턴스 메서드
    • 인스턴스 생성 후!, 참조변수.메서드이름()으로 호출
    • 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드
    • 메서드 내에서 인스턴스 변수(iv) 사용 가능
  • static 메서드 (클래스 메서드)
    • 객체생성 없이 '클래스이름.메서드이름()'으로 호출
    • 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드
    • 메서드 내에서 인스턴스 변수(iv) 사용 불가!
      ex) Math.random();
  • 인스턴스 변수를 사용 O: 인스턴스 메서드/ iv 사용 X: static 메서드

static을 언제 붙여야 할까?

  • 속성(멤버 변수) 중에서 공통 속성에 static을 붙인다.
  • 인스턴스 멤버(iv, im)을 사용하지 않는 메서드에 static을 붙인다.
    • 메서드 : 명령문 집합. iv를 쓰냐 안쓰냐의 차이~
    • 모든 객체에 공통적인 메서드라 static을 붙이는게 아님. 변수랑 헷갈리지 말것!

메서드 간의 호출과 참조

  • static메서드는 인스턴스 변수(iv)를 사용할 수 없다.

Q&A

  • static 메서드는 static 메서드 호출 가능?
    • ㅇㅋ
  • static 메서드는 인스턴스 변수 사용 가능?
    • 인스턴스 변수는 객체를 생성해야 사용가능 -> 객체가 iv의 묶음이기 때문.
    • static은 언제나 호출가능하기 때문에 객체가 필요한 iv를 사용할 수 없다.
  • static 메서드는 인스턴스 메서드 호출가능?
    • ㄴ. iv로 작업하는 메서드이기 때문이다.
  • 왜? static 메서드는 인스턴스 멤버를 쓸 수 없나요?
    • static메서드(항상 호출가능) 호출 시, 객체(iv묶음)가 없을 수도 있어서.
profile
백엔드를 공부하고 있습니다.

0개의 댓글