접근 제한자
접근 제한자(access modifier)는 클래스, 필드, 메서드, 생성자에 대한
접근 권한을 제한하는 키워드이다.
자바에서는 다음과 같은 네 가지의 접근 제한자가 있다.
public, : 모두 접근가능
protected, : 같은 패키지 내 가능, default보다 주로 사용됨
default, : void 앞에 아무것도 붙지않으면 void
private : 같은 클래스 내에서만 접근이 가능하다.

같은 클래스 내의 경우의 코드
package day07.modi.pac1;
public class A {
    // 필드
    public int f1;
    int f2; // default 제한
    private int f3;
    // 메서드
    public void m1() {}
    void m2() {} // default 제한
    private void m3() {}
    // 생성자
    public A(int a) {}
    A(double b) {}
    private A(boolean c) {}
    void test() {
        this.f1 = 10;
        this.f2 = 10;
        this.f3 = 10;  // 같은 클래스 내에서는 public 이든 default 든 private 이든 다 okay.
        m1();
        m2();
        m3();
        new A(10); // public
        new A(5.5); // default
        new A(false); // boolean
    }
}
같은 패키지내 다른 클래스일 경우
package day07.modi.pac1;
import day04.Dancer;
import day07.modi.pac2.C;
public class B {
    public int z1;
    int z2;
    private int z3;
    void test() {
       A a1 =  new A(50); // public
        A a2 = new A(5.55); // default
//        A a3 = new A(true); // private
        a1.f1 = 20; // public
        a1.f2 = 50; // default
        C c = new C();
        c.y1 = 10;
//        c.y2 = 20;
//        c.y3 = 30;
        Dancer dancer = new Dancer(); // default 다른패키지라 안됨 public 이되면 사용가능
        dancer.dance(); // Dancer에 public이 되어도 dance에 public이 되야함
    }
}
패키지까지 다를 경우
package day07.modi.pac2;
import day04.Dancer;
import day07.modi.pac1.A;
import day07.modi.pac1.B;
public class C {
    public int y1;
    int y2;
    private int y3;
    void test() {
        A a = new A(100);// public
//        new A(3.14); // default
//        new A(false); // private
        a.f1 = 10; // public
//        a.f2 = 20; // default
//        a.f3 = 30; // private
        a.m1();
//        a.m2();
//        a.m3();
        new B();
    }
}'Java' 카테고리의 다른 글
| Java* 사용 제한자 static (0) | 2024.04.22 | 
|---|---|
| Java* 객체지향 캡슐화(encapsulation) (0) | 2024.04.22 | 
| Java* 객체지향 상속 (Inheritance) (0) | 2024.04.22 | 
| Java* 객체지향 Practice (0) | 2024.04.18 | 
| Java* 객체지향 생성자, 접근제한자 (0) | 2024.04.18 | 
