2013년 10월 21일 월요일

[자바 상수 객체, Java Constant Object] 상수 객체란 final변수와 같이...

[자바 상수 객체, Java Constant Object]
 
상수 객체란 final변수와 같이 객체의 내용을 변경 할수 없는 객체를 말한다.
 
객체의 내용을 외부에서 수정하지 못하게 하기 위해서는 인스턴스 변수는 모두 final로 선언하거나, private으로 선언한다.
 
인스턴스 변수를 수정하는 메쏘드는 외부에서 접근하지 못하게 private으로 선언
예) String, Integer 등은 그 내용을 수정 할 수 없도록 위와 같이 만들어져 있다.
 
final로 선언된 변수가 참조형 일 경우에는 그 변수의 참조 값을 바꿀 수는 없으나 그 변수가 참조하고 있는 객체나 배열의 내용은 수정 가능하다.

[예제, ConstObjectTest.java]
 
package onj;
class ConstClass
{
    final int v1;
    private int v2;
    
    ConstClass( int value1, int value2 )
    {
        v1 = value1;
        v2 = value2;
    }
    int getV2()
    {
        return v2;
    }
}
class NonConstClass
{
    int v=999;
}
class ConstObjectTest
{
    public static void main( String[] args )
    {
        ConstClass obj = new ConstClass(1, 2);
        
        System.out.println( "obj.v1 = " + obj.v1 );
        System.out.println( "obj.getV2() = " + obj.getV2() );
        // obj.v1 = 3;  // 오류: 화이널 변수이므로 대입 불가
        // obj.v2 = 4;  // 오류: private 변수이므로 접근 불가
        final NonConstClass obj2 = new NonConstClass();
        // obj2 = new NonConstClass(); // 오류: 화이널 참조 변수이므로 수정 불가
     // 화이널 참조값을 통하여 객체의 내용 수정 가능하다,
        obj2.v = 3;            
    }
}
 
[결과]
 
obj.v1 = 1
obj.getV2() = 2
 

댓글 없음:

댓글 쓰기