class MyMath2 {
long a, b;
long add() {
return a+b;
}
static long add(long a, long b) {
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 메서드는 인스턴스 메서드 호출가능?
- 왜? static 메서드는 인스턴스 멤버를 쓸 수 없나요?
- static메서드(항상 호출가능) 호출 시, 객체(iv묶음)가 없을 수도 있어서.