>Java >java지도 시간 >Java 접근 권한 소개 및 이해

Java 접근 권한 소개 및 이해

巴扎黑
巴扎黑원래의
2017-07-17 17:59:581500검색

1. 접근 권한이란 무엇인가요?

클래스 내 전역 변수와 메소드의 가시 범위, 즉 객체 참조를 통해 나타날 수 있는 범위.

2. 표시되는 권한 범위 수정자

√×
public protected private
팩 범위 ×
다른 패키지도 가능
3. 가시성의 이해 변수나 메서드는 다른 클래스 B에 표시됩니다. 이는 변수나 메서드가 개체 참조를 통해 B에 직접 노출될 수 있음을 의미하며, 그 반대의 경우도 마찬가지입니다. 보이지 않음은 개체 참조를 통해 변수나 메서드에 직접 액세스할 수 없음을 의미합니다. B클래스에서.
변수나 메소드가 클래스에 표시되지 않는다고 해서 해당 변수나 메소드가 클래스 B에 나타날 수 없다는 의미는 아니며, 클래스 B에 직접 노출될 수는 없습니다. public이나 protected를 통해 간접적으로 노출될 수 있습니다. 유형 메소드 참조가 간접적으로 나타납니다.

package com.javase.temp;import org.junit.Test;public class TempTest {private String str = new String("abc");

    @Testpublic void printStr() {
        System.out.println(this.str);
    }
}

TempTest 클래스에는 private 유형이고 다른 클래스에는 표시되지 않는 str 멤버 변수가 있는 것이 분명합니다. 이는 해당 변수가 개체 참조를 통해 다른 클래스에 나타날 수 없음을 의미합니다. 다른 클래스에 간접적으로 나타나는 printStr 메소드를 호출하여 호출할 수 있습니다.

package com.javase.temp;import org.junit.Test;public class TempTest01 {

    @Testpublic void test01() {
        TempTest obj = new TempTest();
        obj.printStr();//通过TempTest类型的public类型的方法间接访问了private类型的变量,在访问时不知道private类型变量的情况    }
}
출력:

TempTest 개체 obj의 printStr 메서드가 TempTest01 클래스에서 호출되고 전용 변수 str의 값이 출력됩니다. str은 TempTest01에서는 직접 노출되지 않고 TempTest의 printStr 메소드에서 직접 노출되며, printStr 메소드는 TempTest에서 직접 노출되므로 str이 TempTest에서 간접적으로 노출된다.

TempTest의 프라이빗 유형 변수의 값은 TempTest01에 출력되지만 이 출력은 무작위이며 무의식적입니다. TempTest01은 출력 결과가 변수 str에서 나오는지 알 수 없으며 출력은 의미가 없습니다.

외부 세계에서 직접 접근할 수 없도록 설계된 변수는 일반적으로 이러한 유형의 작업에서 눈에 보이는 다른 변수 및 메서드를 지원하기 위한 중간 프로세스로 사용됩니다.

위 내용은 Java 접근 권한 소개 및 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.