instance 메서드
static 메서드 (class 메서드)
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 을 언제 붙여야 할까?
메서드 간의 호출과 참조
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
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 메서드는 인스턴스 변수 사용 가능?
Q. static 메서드는 인스턴스 메서드 호출 가능?
Q. 왜? static 메서드는 인스턴스 멤버를 쓸 수 없나요?