클래스메서드와 인스턴스메서드
1.
class TestEx1 {
int iv = 10;
static int cv = 20;
static void add() {
System.out.println(cv); // 클래스 변수이므로 사용가능
// System.out.println(iv); 인스턴스 변수이므로 사용불가능
TestEx1 t = new TestEx1(); // 객체생성
System.out.println(t.iv); // 사용가능
}
}
2.
class TestEx1 {
int iv = 10;
static int cv = 20;
static void abc() {}
void add() {
abc();
System.out.println(cv);
System.out.println(iv);
}
}
3.
class MemberCall {
int iv = 10;
static int cv = 20;
int iv2 = cv;
// static int cv2 = iv; iv 는 인스턴스변수이므로 불가능
static int cv2 = new MemberCall().iv;
static void staticMethod1() {
System.out.println(cv);
// System.out.println(iv); iv 는 인스턴스변수이므로 사용불가능
MemberCall c = new MemberCall();
System.out.println(c.iv);
}
void instanceMethod1() {
System.out.println(cv);
System.out.println(iv);
}
static void staticMethod2() {
staticMethod1(); // static 메서드는 호출가능
// instanceMethod1(); 인스턴스메서드는 호출불가능
MemberCall c = new MemberCall();
c.instanceMethod1();
}
void instanceMethod2() {
staticMethod1();
instanceMethod1();
}
public static void main(String [] args) {
staticMethod1(); // 같은클래스에 있는 메서드일때는 클래스이름을 제외한 메서드이름만 써도된다
staticMethod2();
MemberCall mc = new MemberCall();
mc.instanceMethod1();
mc.instanceMethod2();
}
}