[Java] 클래스, 인스턴스, 객체 (2)

1617 단어 eclipseJavaJava
  1. 메소드
public static void sum(int left, int right) {
	System.out.println(left+right);
}

위의 코드를 보면, sum이라는 메소드는 static이라는 키워드를 달게 되면, sum은 클래스 소속의 메소드가 된다.

public class CalculatorDemo3 {
    
   public static void main(String[] args) {
       Calculator3.sum(10, 20);
       Calculator3.avg(10, 20);
        
       Calculator3.sum(20, 40);
       Calculator3.avg(20, 40);
   }

}

static이 붙어있는 클래스 메소드는 static이 붙어있지 않은 메소드와 다르게 클래스에 접근하여 직접적으로 실행할 수 있다.
위의 코드를 보면, Calculator3라는 클래스에 직접적으로 접근하여 sum이 실행된다.
이는 메모리와 코드를 절약할 수 있게 도와준다.

  1. 클래스, 인스턴스 메소드 1) 인스턴스 메소드는 클래스 멤버에 접근할 수 있다.
    2) 클래스 메소드는 인스턴스 멤버에 접근할 수 없다. 위 두 가지 사항을 기억하자. 아래 코드 예제를 통해 자세히 알아보자.
    class C1{
       static int static_variable = 1;
       //static이 붙어있으므로 클래스 변수
       int instance_variable = 2;
       // static이 없으므로 인스턴스 변수
       static void static_static(){
       // 클래스 메소드가 클래스 변수를 호출하고 있을때
           System.out.println(static_variable);
       }
       static void static_instance(){
       //static 클래스 메소드가 인스턴스 변수에 접근하는 경우에 어떻게 될것인가.
           // 클래스 메소드에서는 인스턴스 변수에 접근 할 수 없다. 
           //System.out.println(instance_variable);
       }
       void instance_static(){
           // 인스턴스 메소드에서는 클래스 변수에 접근 할 수 있다.
           System.out.println(static_variable);
       }
       void instance_instance(){        
           System.out.println(instance_variable);
       }
    }


마지막 용어정리를 하자면,
인스턴스 변수는 Non-static Field라고 하고,
클래스 변수는 Static Field라고 한다.

좋은 웹페이지 즐겨찾기