クライアント プログラマー: アプリケーションでデータ型を使用するクラス コンシューマー。彼の目標は、迅速なアプリケーション開発のためにさまざまなクラスを収集することです。
クラス作成者: クラスの構築を目的として新しいデータ型を作成するプログラマー。
アクセス制御が存在する理由: a. クライアントプログラマが触れるべきではない部分に触れないようにするため b. ライブラリ設計者がクライアントプログラマへの影響を心配することなくクラスの内部動作メソッドを変更できるようにするため
キーワードは次の 4 つです。 public、protected、default、private (定義された内容を誰がすぐに使用できるかを決定します)
適用範囲
アクセス権限 クラス パッケージ サブクラス その他のパッケージ
∨ ∨ × × (パッケージのアクセス権、で利用可能ですパッケージ全体にアクセス)
型作成者と型の内部メソッド以外はアクセスできないulate要素]
テストクラス)
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); } }テストクラスの結果はpublicにアクセスできることを示しています上記では 同じ 4 つのクラスを使用して protected をテストします
Person の uanme を protected に変更した後、クラス Parents がエラーを報告しました フィールド Person .uname が表示されません (クロスパッケージできないことを示します)
他の 3 つは影響を与えません
クロスパッケージを除き、他のものはアクセスに影響を与えないことを説明しますprivate
このクラス内でのみアクセス可能ですが、Personal の助けを借りて set メソッドと get メソッドに関連しますクラス内の uname にアクセス可能 default テスト結果説明: このパッケージ内でのみアクセス可能、他のパッケージでは継承関係であってもアクセスできません。