자바에서는 공공의 그리고 사적인 ~이다 키워드 이는 다음과 같이 알려져 있습니다. 접근 수정자 또는 지정자 . 클래스의 범위나 접근성을 제한합니다. 건설자 , 변수 , 방법 s 및 데이터 멤버. 어떤 것이 적용되는지에 따라 다릅니다. Java는 네 가지 유형의 액세스 수정자를 제공합니다. 공개, 비공개, 보호 , 그리고 기본 . 하지만 이 섹션에서는 공공 및 민간 두 가지에 대해서만 논의하고 공개 액세스 지정자와 비공개 액세스 지정자의 차이점 예를 들어.
액세스 한정자는 다른 클래스가 특정 필드를 사용하거나 특정 메서드를 호출할 수 있는지 여부를 제어합니다. 자바 두 가지 수준의 액세스 제어를 제공합니다.
다음 표는 public 및 private 한정자가 허용하는 멤버에 대한 액세스 수준을 보여줍니다.
인공지능과 지능형 에이전트
아직도 둘 사이의 차이점이 명확하지 않나요? 액세스 수준이 가시성에 어떤 영향을 미치는지 보여주는 그림을 보여드리겠습니다. 다음 그림은 두 패키지를 보여줍니다. p1 그리고 p2 . 각 패키지에는 두 개의 클래스가 포함되어 있습니다. 데모1 그리고 데모2 (패키지 p1에 있음) 및 데모3 그리고 데모4 (패키지 p2에 있음)
다음 표에서는 클래스를 하나씩 공개 및 비공개로 설정할 경우 클래스의 가시성에 대해 설명합니다. 위 그림에서 Demo1은 각 액세스 한정자에 대해 표시되는 유일한 클래스입니다.
자세히 논의해 봅시다.
공개 액세스 수정자
를 사용하여 지정할 수 있습니다. 공공의 예어. 그 범위나 접근성은 다른 액세스 지정자 중에서 가장 넓습니다. public으로 선언된 변수, 클래스 및 메서드는 프로그램의 모든 곳에서 액세스할 수 있습니다. 공개 데이터 구성원의 범위에 제한을 두지 않습니다. 메소드와 클래스를 공개로 선언하면 다음 원칙도 위반됩니다. 캡슐화 . 최상위 클래스에서도 사용할 수 있습니다.
개인 액세스 지정자를 사용해 보겠습니다. 자바 프로그램 더 나은 이해를 위해.
Demo1.java
데이터베이스의 정규화
package p1; public class Demo1 { public void show() { System.out.println('Javatpoint'); } }
Demo2.java
package p2; import p1.*; class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); obj.show(); } }
산출
Java의 사용자 정의 예외
Javatpoint
비공개 액세스 수정자
이는 공개 수정자의 반대입니다. 를 사용하여 지정할 수 있습니다. 사적인 키워드 뒤에는 클래스 이름(중첩 클래스에만 적용됨), 메서드 이름 또는 데이터 멤버가 옵니다. 최상위 클래스 또는 개인 액세스 지정자를 사용할 수 없습니다. 인터페이스 . private으로 선언된 변수, 메서드, 클래스는 해당 클래스가 선언된 클래스에서만 접근할 수 있거나 부모 클래스를 상속받아 접근할 수 있습니다. 이는 Java에서 가장 제한된 액세스 지정자입니다. 캡슐화의 높이 형태입니다.
- 우리는 할 수 없습니다 우세하다 비공개로 선언된 메소드.
- 생성자와 함께 private 수정자를 사용하면 하위 클래스화되는 것을 방지할 수 있습니다.
- 동일한 클래스 내의 다른 클래스로부터 해당 클래스를 숨깁니다. 패키지 .
더 나은 이해를 위해 Java 프로그램에서 개인 액세스 지정자를 사용해 보겠습니다.
다음 예에서는 Demo1과 Demo2라는 두 개의 클래스를 선언했습니다. Demo1 클래스에서는 메소드를 정의했습니다. 보여주다() 비공개로. Demo2 클래스에는 Demo1 클래스의 객체를 생성한 main() 메서드가 포함되어 있습니다. 그 후에는 Demo2 클래스에서 Demo1 클래스의 비공개 메서드에 액세스하려고 하는데 이는 불가능합니다. 하지만 여전히 프로그램을 실행하여 어떤 오류가 표시되는지 확인하겠습니다.
class Demo1 { //defining method as private private void show() { System.out.println('Javatpoint'); } } public class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); //trying to access private method of the class Demo1 obj.show(); } }
위 프로그램을 실행하면 다음과 같은 오류가 표시됩니다.
Java의 공개 액세스 지정자와 개인 액세스 지정자의 차이점
공개 수정자와 비공개 수정자의 주요 차이점은 가시성입니다. Java는 클래스 멤버의 가시성을 다음과 같이 분류합니다.
- 동일한 패키지의 서브클래스
- 동일한 패키지의 서브클래스가 아닌 경우
- 다양한 패키지의 서브클래스
- 동일한 패키지나 하위 클래스에 속하지 않는 클래스
어느 것을 사용해야 할까요?
메서드나 속성을 어디에서나, 다른 클래스 및 개체의 인스턴스에서 볼 수 있도록 하려면 공용 액세스 수정자를 사용해야 합니다. 메서드나 속성을 자체 클래스에만 표시하려면 private 액세스 한정자를 사용하세요. 상수를 제외한 공개 필드는 피하세요.