hyeonga_code

Java_41_접근 제한자_public < protected < default < private 본문

Java

Java_41_접근 제한자_public < protected < default < private

hyeonga 2023. 10. 2. 05:59
반응형


- 접근 제한자 : 
    - public : universe
          - 외부 클래스가 자유롭게 사용할 수 있습니다.
          - 다른 패키지에서도 접근이 가능합니다.
     - protected : sub class
          - 같은 패키지 또는 하위 클래스에서 사용할 수 있습니다.
     - private : same class
          - 외부에서 사용할 수 없습니다.
          - 같은 클래스 내에서만 접근이 가능합니다.
     - default : same package
          - 따로 명시하지 않는 경우 자동으로 설정됩니다.
          - 같은 패키지에 소속된 클래스에서만 사용할 수 있습니다.
     - 강화 순서
          public < protected < default < private

-----
1. 같은 폴더 안에 [ src ] 폴더 하위에 package 새로 생성 'test'
2. [ test ] 안에 'Test01', 'Test02' 클래스 생성
'Test01'
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
package test;
 
public class Test01 {
    private int a;
    Test01() {
        // 앞에 접근 제한자가 없으므로 default 값으로 기본 설정된 것
        // 같은 패키지에서만 접근 할 수 있음
        a = 10;
    }
    void disp() {
        System.out.println("a = " + a);
    }
}


 'Test02'
=====

1
2
3
4
5
6
7
8
package test;
 
public class Test02 {
    public static void main(String[] args) {
        Test01 t1 = new Test01();
        t1.disp();
    }
}


 'same'
=====

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
27
import test.*;
 
class A06 {
    private int a;
    A06() {
        a = 10;
    }
    void disp() {
        System.out.println("a = " + a);
    }
}
public class same {
    public static void main(String[] args) {
        A06 ap = new A06();
        ap.disp();
        // 출력됨
 
        Test01 t1 = new Test01();
        // 오류 : The constructor Test01() is not visible
        // default 값이므로 적용이 되지 않음
        // Test01에서 생성자 앞에 public을 붙여주어야 한다.
        
        A06 ap = new A06(1);
        // 오류 : The constructor A06(int) is undefined
        // 
    }
}
반응형

'Java' 카테고리의 다른 글

Java_43_지정 예약어  (0) 2023.10.06
Java_42_캡슐화  (0) 2023.10.05
Java_40_this  (0) 2023.10.01
Java_39_생성자  (0) 2023.10.01
Java_38_Method/Class Area  (0) 2023.09.30