Instance Field vs Static Field

Static Field (일명 Class Field)
-전역 데이터, 공유 데이터로 클래스 로딩 시 공간을 할당
-한 클래스에 하나만 정적 필드가 할당됨
-클래스명.정적필드명으로 사용
-클래스 객체의 개수를 카운트하거나 유틸리티 값들을 저장하는 경우 사용함

Instance Field
-객체의 현재 상태를 저장할 수 있는 자료
-객체가 생성될 시 메모리 공간을 할당
-객체명.객체필드명으로 사용

 

class ValueClass
{
     private int value = 0;                           // 인스턴스 필드
     private static int count = 0;              
// 정적 필드
     public ValueClass() { count++; }    
     public void setValue(int value) { this.value = value; }                     // 인스턴스 메소드
     public int getValue() { return this.value; }                                          // 인스턴스 메소드
     public void print() { Console.WriteLine(“value={0}”, this.value); } // 인스턴스 메소드
     public static void printString(string str) {  Console.WriteLine(str); } // 정적 메소드
     public static int getCount() {  return count; }                                         // 정적 메소드
}
class Program
{
     static void main(string[] args)
     {
          ValueClass c1 = new ValueClass();
          c1.setValue(10);                               // 인스턴스 메소드
          c1.print();                                            // 인스턴스 메소드
          ValueClass.printString(“test”);     // 정적 메소드 (클래스명.정적메소드명)
          ValueClass c2 = new ValueClass();
          c2.setValue(20);                               // 인스턴스 메소드
          c2.print();                                            // 인스턴스 메소드
          Console.WriteLine(“number of ValueClass: {0}”, ValueClass.getCount());     // 정적 메소드 (클래스명.정적메소드명)
     }
}


Leave a Reply

Your email address will not be published. Required fields are marked *