Programming/Java

클래스메서드와 인스턴스메서드

Gaffel 2011. 1. 17. 00:19


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();
   }
}