클라이언트 프로그래머: 애플리케이션에서 데이터 유형을 사용하는 클래스 소비자 그의 목표는 신속한 애플리케이션 개발을 위해 다양한 클래스를 수집하는 것입니다.
클래스 생성자: 클래스 구축을 목표로 새로운 데이터 유형을 생성하는 프로그래머.
액세스 제어가 존재하는 이유: a. 클라이언트 프로그래머가 만져서는 안 되는 부분을 방지하기 위해 b. 라이브러리 디자이너가 클라이언트 프로그램에 영향을 미칠 염려 없이 클래스의 내부 작업 방법을 변경할 수 있도록 하기 위해; 🎜>
Java의 4가지 키워드: public, protected, default, private (정의된 내용을 누가 사용할 수 있는지 즉시 결정) 적용 범위 통해 통해 ââ'¬Å“ ∨ ∨ ∨ × × (상속 클래스 접근 가능 및 프라이빗과 동일한 권한) ∨ × × × (패키지 접근 권한, 즉 패키지 전체에서 접근 가능) 해당 타입의 내부 메소드 외에는 누구도 접근할 수 없는 creator 및 Elements) 다음은 코드를 이용한 자세한 설명입니다. (Person Student Teacher Parents 4개 클래스 생성 및 테스트 클래스 1개)테스트 클래스의 결과는 위의 항목에 public이 접근할 수 있음을 보여줍니다. 동일한 4개의 클래스를 사용하여 protected를 테스트합니다Person의 uanme를 protected로 변경한 후 클래스는 부모는 오류를 보고합니다. Person.uname 필드가 표시되지 않습니다(교차 패키지할 수 없음을 나타냄)
package com.zq.demo.test1; /** * 类内 * @author Administrator */ public class Person { public String uname = "王五"; public void introduceMyself(){ System.out.println(uname); } } package com.zq.demo.test1; //同一个包 public class Student { Person p = new Person(); public void test(){ System.out.println(p.uname); } } package com.zq.demo.test1; //子类 public class Teacher extends Person{ public int age; Person p = new Person(); public void test1(){ System.out.println(p.uname); } } package com.zq.demo.test2; //不同包 import com.zq.demo.test1.Person; public class Parents { public String uname = "haha"; Person p = new Person(); public void test2(){ System.out.println(p.uname); } }
나머지 세 개는 영향을 주지 않습니다
Cross-Package를 제외한 나머지 3개는 접근에 영향을 미치지 않음을 나타냄
private
이 클래스에서만 접근이 가능하지만, Person 클래스
default에서 uname의 set 및 get 메소드를 사용하여 액세스합니다.테스트 결과 설명은 다른 패키지에서도 이 패키지에서만 접근 가능합니다. 상속 관계이므로 접근할 수 없습니다