ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA OBJECT CLASSS 와 객체 및 캡슐화
    자바 JAVA 2020. 7. 28. 07:23

    8.8 가시성 수식어

    가시성 수정자는 클래스와 클래스의 구성원의 가시성을 지정하는 데 사용할 수 있다.

    클래스, 메서드 및 데이터 필드에 대해 공용 가시성 한정자를 사용하여 다음을 나타낼 수 있다.

     

    그들은 다른 어떤 수업에서도 접근할 수 있다. 사용 중인 가시성 한정자가 없는 경우, 기본적으로클래스, 메서드 및 데이터 필드는 동일한 패키지의 모든 클래스에서 액세스할 수 있다. 이것은

     

    package-private 또는 package-access로 알려진.

     

    package-private(또는 packageaccess)

     

    318 8장 오브젝트 및 클래스

     

    클래스가 공개 클래스로 정의되지 않은 경우 동일한 패키지 내에서만 액세스할 수 있다. 로서

    그림 8.15와 같이 C1C2에서 접근할 수 있지만 C3에서는 접근할 수 없다.

    참고

     

    패키지는 클래스를 구성하는 데 사용될 수 있다. 이렇게 하려면 다음 줄을 추가하십시오.

    프로그램의 첫 번째 비댓글 및 비문 문장으로서:

     

    packageName 패키지;

     

    패키지 문 없이 클래스를 정의한 경우, 클래스는 기본값으로 배치된다고 한다.

    꾸러미

    Java는 기본 패키지를 사용하는 대신 패키지에 클래스를 넣을 것을 Java에서 권장한다. 을 위해

    그러나 이 책은 기본 패키지를 사용한다. 패키지에 대한 자세한 내용은

    부록 III.G, 패키지를 참조하십시오.

     

    Java는 공용 및 기본 가시성 수식어 외에도 개인 및 개인 정보를 제공한다.

    클래스 멤버에 대한 보호 수식어. 이 절에서는 사설 수식어를 소개한다. The

     

    보호되는 수식어는 섹션 11.13 "보호된 데이터 및 방법"에서 소개될 것이다.

     

    개인 한정자가 자체 내에서만 메서드와 데이터 필드에 액세스할 수 있도록 함

    class. 그림 8.14class C1의 공개, 기본 및 개인 데이터 필드 또는 방법을 보여준다.

     

    동일한 패키지의 클래스 C2와 다른 패키지의 클래스 C3에서 액세스할 수 있다.

    패키지 사용

    패키지 p1;

     

    O.x에 액세스할 수 있음;

    O.Y.에 접근할 수 있다.

    o.z에 접근할 수 없음;

    o.m1()을 호출할 수 있음;

    o.m2()를 호출할 수 있음;

    o.m3()을 호출할 수 없음;

    }

    C1 o = C1();

    그림 8.14 개인 수식어는 기본 수식어인 정의 클래스에 대한 액세스를 제한한다.

    패키지에 대한 액세스를 제한하고 공용 수식어가 무제한 액세스를 허용한다.

    패키지 p1;

    클래스 C1 {

    ...

    }

     

    패키지 p1;

    공용 클래스 C2 {

    C1에 접근할 수 있다

     

    }

    패키지 p2;

    공용 C3 {

    C1에 액세스할 수 없음;

    C2에 접근할 수 있다.

    }

     

    그림 8.15 비공용 클래스는 패키지 액세스가 가능하다.

     

    가시성 한정자는 클래스의 데이터 필드 및 메서드에 액세스할 수 있는 방법을 지정하십시오.

    교실 밖에서 내부로부터 데이터 필드 및 메서드에 접근하는 데 제한이 없다.

     

    class. 그림 8.16b와 같이 c 클래스의 물체는 c 클래스의 개인 멤버에 접근할 수 없다

    .

    왜냐하면 c는 시험반이기 때문이다. 그림 8.16a에 나타난 바와 같이, C 등급의 물체는 C 등급의 물체에 접근할 수 있다.

    c는 그 자신의 계급 안에서 정의되기 때문에, 개인 구성원들.

    내부 접근

     

    8.9 데이터 필드 캡슐화 319

     

    주의

    개인 수식어는 학급 구성원에게만 적용된다. 대중 수식어

    반이나 반의 회원에게 지원할 수 있다. 공용 및 개인 한정자 사용

     

    로컬 변수에 컴파일 오류를 발생시킬 수 있다.

    참고

    대부분의 경우 건설업자는 공공이어야 한다. 하지만, 만약 당신이 그것을 금지하고 싶다면.

    사용자가 클래스의 인스턴스를 만들 때 개인 생성자를 사용하십시오. 예를 들면 있다.

     

    모든 데이터 필드와 수학 클래스에서 인스턴스를 만들 이유가 없음

     

    방법은 정적이다. 사용자가 Math 클래스에서 개체를 만드는 것을 방지하려면

    java.properties의 생성자.수학은 다음과 같이 정의된다.

    사설 수학() {

    }

     

    8.9 데이터 필드 캡슐화

    데이터 필드를 비공개로 설정하면 데이터를 보호하고 클래스를 쉽게 유지할 수 있다.

    CircleWithStaticMembers 클래스의 데이터 필드 반지름 및 numberOfObjects

    목록 8.7은 직접 수정할 수 있다(: c1. radius = 5 또는

     

    CircleWithStaticMembers.numberOfObjects = 10). 이것은 좋은 관행이 아니다. 에게.

    두 가지 이유:

     

    첫째, 데이터를 변조할 수 있다. 예를 들어, numberOfObjects는 다음 값을 세는 것이다.

    생성된 개체 수, 그러나 임의의 값으로 잘못 설정될 수 있음(:

    CircleWithStaticMembers.numberOfObjects = 10).

    둘째, 수업은 유지관리가 어려워지고 버그에 취약해진다. 가정하다

    CircleWithStaticMembers 클래스를 수정하여

     

    다른 프로그램이 이미 클래스를 사용한 후 반경은 음성이 아니다. 그래야 한다.

    CircleWithStaticMembers 클래스뿐만 아니라 프로그램도 변경

     

    고객이 반경을 직접 수정했을 수 있기 때문에(:

    c1.168 = -5).

    데이터 필드의 직접 수정을 방지하려면 선언하십시오.

    댓글

Designed by Tistory.