Java에서는 모든 것이 어떤 형태의 액세스 제어를 가지고 있습니다.
액세스 권한의 제어 수준은 공개, 보호, 패키지 액세스 권한 (키워드 없음) 및 개인입니다.
사용될 때, 공개, 보호 및 개인 인 Java Access 수정자는 클래스의 각 멤버 (도메인 또는 방법) 정의 앞에 배치됩니다.
1. 클래스 멤버의 액세스 권한
회원에 대한 액세스를 얻는 유일한 방법은 다음과 같습니다.
1). 이 회원을 공개하십시오. 누구이든, 회원은 액세스 할 수 있습니다.
2). 수정자를 해결하고 다른 클래스를 동일한 패키지에 배치하여 멤버에 대한 패킷 액세스 권한을 부여하고 패키지의 다른 클래스는 멤버에 액세스 할 수 있습니다.
3). 상속 클래스는 공개 회원과 보호 회원 모두에게 액세스 할 수 있습니다.
4). 숫자 값을 읽고 변경할 수있는 액세서 및 뮤지토 방법을 제공합니다.
1. 패키지 액세스 권한
기본 액세스 권한에는 키워드가 없지만 Pass는 패키지 액세스 권한을 나타냅니다. 즉, 현재 보고서의 다른 모든 클래스는 해당 멤버에 대한 액세스 권한이 있지만이 패키지 이외의 모든 클래스의 경우이 멤버는 실제로 비공개입니다.
패키지 액세스는 패키지 내의 모든 관련 클래스를 결합하여 서로 쉽게 상호 작용할 수 있습니다.
참고 : 두 클래스가 동일한 디렉토리에 있고 스스로 패키지 이름을 설정하지 않으면 Java는 파일을 디렉토리와 제휴 한 기본 패키지와 같은 파일과 자동으로 간주하므로 이러한 파일에는 서로 패키지에 액세스 할 수 있습니다.
다음 예는이 문제를 보여줍니다.
// 클래스 케이크와 파이는 동일한 디렉토리에 있으며 패키지 클래스 파이 {void f () {System.out.println ( "pie.f ()")에 명시 적으로 표시되지 않습니다. }} 클래스 케이크 {public static void main (String [] args) {pie x = new Pie (); xf (); }} // 출력은 pie.f ()입니다.2. 공개 : 인터페이스 액세스 권한
키워드 공개를 사용한다는 것은 모든 사람, 특히 클래스 라이브러리를 사용하는 고객 프로그래머가 후속 회원 선언을 사용할 수 있음을 의미합니다.
3. 프라이버시 : 액세스 할 수 없습니다
키워드 비공개는 멤버를 포함하는 클래스 이외의 다른 클래스가 멤버에 액세스 할 수 없음을 나타냅니다. 동일한 패키지의 다른 클래스는이 클래스의 개인 구성원에게 액세스 할 수 없으므로 이는 자신을 격리하는 것과 같습니다.
개인 키워드의 기능에는 객체를 만드는 방법을 제어하고 다른 사람들이 특정 생성자 (또는 모든 생성자)에 직접 액세스하는 것을 방지하는 등 많은 용도가 있습니다. 바라보다
다음 예제 :
클래스 Sundae {private sundae () {} 정적 Sundae Makeasundae () {return new Sundae (); }} public class iCecream {public static void main (String [] args) {Sundae x = sundae.makeasundae (); }}이 예에서는 MakeAsundae () 메소드를 호출하여 Sundae 객체를 만들 수 있지만 생성자를 통해이를 생성 할 수는 없습니다.
이것은 수업의 개인 필드에도 적용됩니다.
그러나 한 가지 주목해야 할 것은 클래스의 객체에 대한 언급이 비공개이기 때문에 다른 객체가 객체에 대한 공개 참조를 가질 수 없다고 생각할 수 없다는 것입니다.
4. 보호 : 액세스 권한을 상속합니다
새 패키지가 생성되고 다른 패키지에서 클래스를 상속하면 액세스 할 수있는 유일한 멤버는 소스 패키지의 공개 멤버입니다.
때로는 기본 클래스의 제작자가 모든 클래스가 아닌 파생 클래스에 특정 멤버에 대한 액세스를 할당하려고합니다.
Protected는 또한 패키지 액세스, 즉 동일한 패키지 내의 다른 클래스 도이 클래스의 보호 요소에 액세스 할 수 있습니다.
2. 인터페이스 및 구현
접근 권한의 통제는 종종 구체적인 구현에서 숨겨진 것으로 지칭된다.
데이터와 방법을 클래스로 포장하고 특정 구현을 숨기는 것은 종종 집합 적으로 캡슐화라고합니다.
두 가지 중요한 이유로 액세스 권한 제어는 데이터 유형 내부의 권한의 경계가 있습니다.
1. 클라이언트 프로그래머가 사용할 수 있고 사용할 수없는 한계를 설정하십시오. 클라이언트 프로그래머가 실수로 내부 메커니즘을 사용하는 인터페이스의 일부로 처리 할 것이라고 걱정하지 않고 구조에서 자신의 내부 메커니즘을 설정할 수 있습니다.
2. 인터페이스와 특정 구현을 분리하십시오.
3. 클래스 액세스 권한
Java에서는 액세스 수정자를 사용하여 라이브러리 사용자가 사용할 수있는 라이브러리의 클래스를 결정할 수도 있습니다.
키워드 클래스 전에 수정자가 배치해야합니다. 예를 들어:
공개 클래스 위젯 {......} 또는
Access.widget을 향상시킵니다.
클래스가 비공개 (클래스가 비공개 인 경우 클래스를 제외한 다른 클래스에 액세스 할 수 없음)가 보호 될 수 없으며 보호 될 수 없으며 (실제로 내부 클래스는 개인 또는 보호 될 수 없지만, 이는 후속 기사에 설명 된대로 특별한 경우) 패키지 액세스 허가 또는 대중 일 수 있습니다.
다른 사람이 수업에 액세스하기를 원하지 않으면 클래스의 모든 생성자를 비공개로 지정하여 누군가가 클래스의 객체를 만들지 못하게 할 수 있습니다. 그러나 이것에 대한 예외가 있으므로 클래스의 정적 멤버 내부에서 클래스를 만들지 못하게 할 수 없습니다. 다음 예를 살펴 보겠습니다.
class soup1 {private soup1 () {} public static soup1 makesoup () {// 정적 메소드를 사용하여 개체를 만듭니다. }} class soup2 {private soup2 () {} private static soup2 ps1 = new Soup2 (); // 싱글 톤 모드를 사용하여 객체 생성 public static soup2 access () {return ps1; } public void f () {}} 공개 클래스 점심 {void revivate () {// soup1 soup = new Soup1; 실행할 수 없습니다} void testsingleton () {soup2.access (). f (); }}우리는 Soup1과 Soup2의 생성자가 모두 비공개임을 알 수 있으며, 아무도이 클래스의 객체를 만들기 위해 생성자를 직접 사용할 수 없습니다. 그러나 우리는이 두 클래스를 사용할 수 있습니다. Soup1에서 정적 메소드를 만들고 생성자를 사용하여 Soup1 객체를 만들고 참조를 반환하십시오. Soup2의 생성은 디자인 패턴에서 싱글 톤 패턴을 사용하며 객체 중 하나만 생성 할 수 있습니다. Soup2 클래스의 대상은 Spre2의 정적 개인 구성원으로 만들어 지므로 하나만 있으므로 공개 방법을 통해 액세스하지 않으면 액세스 할 수 없습니다.
또한 몇 가지 제한 사항은 다음과 같습니다.
1. 각 편집 장치에는 하나의 공개 클래스 만 가질 수 있습니다.
2. 공개 클래스의 이름은 어퍼 케이스 및 소문자를 포함하여 컴파일 장치를 포함하는 파일 이름과 정확히 일치해야합니다.
3. 컴파일 장치에 공개 클래스가 없으면 파일의 이름을 마음대로 이름을 지정할 수 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.