액세스 수정자

감독

  • 추상 클래스
  • 결정적인
  • 액세스 수정자
  • 인터페이스 등

액세스 수정자

– 클래스 멤버(변수 및 메서드)에 대한 액세스 권한을 지정합니다.

전임자)

class A {
    public String y(){
        return "public void y()";
    }
    private String z(){
        return "public void z()";
    }
    public String x(){
        return z();
    }
}
public class AccessDemo1 {
    public static void main(String() args) {
        A a = new A();
        System.out.println(a.y());
        // 아래 코드는 오류가 발생한다.

//System.out.println(a.z()); System.out.println(a.x()); } }

z 방법이 잘못된 이유는 무엇입니까?

– 메서드는 private 키워드로 시작합니다.

비공개는 클래스(A) 외부에서 액세스할 수 없음을 의미합니다.

private을 대체하는 것을 액세스 수정자라고 합니다.

그러나 z 메소드가 리턴할 때 x 메소드가 오류를 리턴하지 않는 이유는 무엇입니까?

– 액세스 한정자가 public이기 때문에 호출할 수 있습니다.

메서드 내용을 보면 내부적으로 메서드 z가 호출된다.

메서드 z는 정상적으로 호출됩니다.

메서드 x와 메서드 z가 같은 클래스에 속하기 때문입니다.


액세스 수정자를 사용하는 이유

– 객체의 로직을 보호하기 위해 구성원을 기준으로 외부 접근을 허용하거나 차단할 필요가 있습니다.

– 사용자에게 객체를 조작할 수 있는 수단만을 제공하여 사용자가 객체 사용에 집중할 수 있도록 도와줍니다.

전임자)

class Calculator{
    private int left, right;
     
    public void setOprands(int left, int right){
        this.left = left;
        this.right = right;
    }
    private int _sum(){
        return this.left+this.right;
    }
    public void sumDecoPlus(){
        System.out.println("++++"+_sum()+"++++");
    }
    public void sumDecoMinus(){
        System.out.println("----"+_sum()+"----");
    }
}
  
public class CalculatorDemo {
    public static void main(String() args) {        
        Calculator c1 = new Calculator();
        c1.setOprands(10, 20);
        c1.sumDecoPlus(); // 출력 결과 :++++30++++
        c1.sumDecoMinus(); // 출력 결과 :----30----
    }
}

미세 제어

사람들 보호 기본 사적인
같은 패키지, 같은 클래스 허용하다 허용하다 허용하다 허용하다
동일한 패키지, 상속 관계 허용하다 허용하다 허용하다 불용성
동일한 패키지, 상속 관계 없음 허용하다 허용하다 허용하다 불용성
다른 패키지, 상속 관계 허용하다 허용하다 불용성 불용성
다른 패키지, 상속 관계 없음 허용하다 불용성 불용성 불용성

클래스 액세스 한정자

– 이 클래스에는 public 및 default의 두 가지 액세스 한정자가 있습니다.

– 액세스 한정자가 첨부되지 않은 경우 기본값이 기본값이 됩니다.

– 액세스 한정자가 public인 클래스는 다른 패키지의 클래스에서 사용할 수 있습니다.

– 기본적으로 동일한 패키지 내에서만 사용 가능합니다.

전임자)

클래스 2개 만들기

public class PublicClass {} // public 접근 제어자

class DefaultClass {} // default 접근 제어자

동일한 패키지 오류 X

public class ClassAccessModifierInnerPackage {
    PublicClass publicClass = new PublicClass();
    DefaultClass defaultClass = new DefaultClass();
}

기타 패키지에서 오류 보고

public class ClassAccessModifierOuterPackage {
    PublicClass publicClass = new PublicClass();
    //DefaultClass defaultClass = new DefaultClass();
}

한 가지 중요한 제한이 있습니다.

공개 클래스를 포함하는 소스 코드는 공개 클래스와 동일한 클래스 이름과 소스 코드의 파일 이름을 가져야 합니다.

코드를 살펴보겠습니다.

이 코드의 이름은 PublicNameDemo.java입니다.

//public class PublicName {}
public class PublicNameDemo {}

주석 처리된 섹션은 오류를 발생시킵니다.

공개 클래스의 이름과 소스 코드의 이름이 일치하지 않기 때문입니다.

이는 하나의 소스 코드에 공용 클래스가 존재할 수 있음을 의미합니다.