1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
 * Field의 참조
 * private 필드는 같은 클래스 내에서만 참조 된다.
 */
package Java_ch4;
 
public class FTest1 {
    int iDefault;
    private   int iPrivate;
    protected int iProtected;
    public    int iPublic;
}
 
class FTest2 {
    FTest1 ft = new FTest1();
    {
        ft.iDefault   = 1;
        //ft.iPrivate = 1; // private 필드는 참조 불가능
        ft.iProtected = 1;
        ft.iPublic       = 1;
    }
}
 
cs


방송통신대학교 Java 프로그래밍 과목 정리 중이다.

Java에서는 클래스, 인터페이스, 필드, 메소드 등을 선언 시 접근 제한자를 지정할 수 있다. 이는 대상에 대한 접근 및 사용 범위를 정의하는 것으로 외부에서 해당 대상을 접근할 수 있는지 여부를 결정한다.


 public : 어디서나 상속 및 참조가 가능하다. 


 abstract : 구현을 생략하고 이름만 정의된 것, abstract 메소드를 하나라고 가지고 있는 클래스를 정의하려면 반드시 abstract 클래스로 해야 한다. 또한 아직 구현되지 않은 메소드를 가지고 있기 때문에 객체 생성은 불가하고 상속만 가능하다.


 생략 : 같은 패키지에서만 상속 및 참조가 가능하다.



 private : 다른 클래스 내부에 중첩된 클래스를 선언할 경우에만 사용. 일반적인 경우에는 사용되지 않고 이 클래스를 포함하고 있는 클래스 내부에서만 상속 및 참조가 가능하다.


 protected : 다른 클래스 내부에 중첩된 클래스를 선언할 경우에만 사용, 같은 패키지의 내부 또는 이 클래스를 포함하고 있는 클래스의 자식 클래스 내부에 참조 가능


필드 선언

 필드는 클래스의 상태 정보를 저장하는 변수이다. 

 static : 해당 클래스로 부터 여러 개의 객체가 생성되더라도 오직 하나만 존재하며 여러 객체가 공유해서 사용한다. static 필드는 서브 클래스로 상속된다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
 * static의 활용
 */
package Java_ch4;
 
class ClassSuper {
    static int iStatic = 10;
    public int iNormalSuper;
}
 
class ClassSub extends ClassSuper {
    public int iNormalSub;
}
 
public class StaticTest {
    public static void main(String[] args) {
        ClassSuper cSup  = new ClassSuper();
        ClassSub   cSub1 = new ClassSub();
        ClassSub   cSub2 = new ClassSub();
        
        //cSub1.iStatic = 10;
        System.out.println("cSup : " + cSup.iStatic);
        System.out.println("cSub1 : " + cSub1.iStatic);
        System.out.println("cSub2 : " + cSub2.iStatic);
    }
}
cs


결과 : cSup, cSub1, cSub2 모두 10


final : 초기화가 끝나면 더 이상 값을 변경할 수 없다. 일반적으로 상수로 사용하고 싶을 때 적용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
 * Field의 참조
 * private 필드는 같은 클래스 내에서만 참조 된다.
 */
package Java_ch4;
 
public class FTest1 {
    int iDefault;
    private   int iPrivate;
    protected int iProtected;
    public    int iPublic;
}
 
class FTest2 {
    FTest1 ft = new FTest1();
    {
        ft.iDefault   = 1;
        //ft.iPrivate = 1; // private 필드는 참조 불가능
        ft.iProtected = 1;
        ft.iPublic       = 1;
    }
}
 
cs


** static 으로 선언된 필드는 객체를 생성하지 않아도 그 필드가 선언된 클래스에 접근만 가능하면 언제든지 사용할 수 있다.

+ Recent posts