public class Ex03_class{

	public static void main(String[] args) {
    	// 일반변수 (지역변수)
        int x;
        x=10;
        System.out.println(x);
    
    	// 클래스 변수 - 객체가 생성되지 않아도 언제나 접근가능.
        // 클래스 변수는 객체생성과 상관없이 하나의 메모리만 할당 받고, 
        // 클래스가 메모리에서 사라질 때 메모리가 해제된다.
        // "클래스명.클래스변수" 형식으로 접근
        System.out.println(Test3.c);
        
        // System.out.println(Test3.a); 는 컴파일 오류이다 a가 메모리 할당을 받지 않았기 때문이다.
        
        // 인스턴스 변수는 객체가 메모리 할당이 된 이 후에 접근 가능하다.
        // "객체명.인스턴스변수" 형식으로 접근
        Test3 0b = new Test3();
        System.out.println(ob.a);
        // System.out.println(ob.b); 컴파일오류.
        // private 필드는 외부 클래스에서 접근불가능하고 해당 클래스에서만 접근가능하다.
        ob.write();
        // 인스턴스 메소드 실행
        
    }

}
class Test3{
	// 필드-인스턴스 변수 : 객체를 생성해야 접근할 수 있는 변수
    int a;
    // 디폴트 : 동일한 패키지에서는 접근할 수 있다.
    private int b=10;
    // private : 해당 클래스에서만 접근할 수 있다.
    
    // 필드 - 클래스변수 : 객체 생성과 상관없이 접근할 수 있다.
    // 클래스가 메모리에 로딩되는 순간 메모리 할당
    public static int c=20;
    // public : 어디에서나 접근 할 수 있다. 
    // static이 붙으면 클래스변수
    
    public void write(){
    	System.out.println(a+" : "+b+ " : " +c);
    }
}

 

+ Recent posts