序文
この記事は、テキストに基づいており、あまりの深さ、開発者のための心に堪能でなければなりません。この記事の主題は、Javaクラスのメンバーがアクセスレベルを設定する理由は?理由は非常に単純である、オブジェクト指向特性をパッケージ化することで、クラスのメンバーは、データパッケージの後に、アクセス制御の異なるレベルを使用し、他のクラスのメンバーは、現在のクラスのメンバーがアクセスするための十分な権限を持っている必要がありアクセスしたいです。この目的は、私がいる限り契約に関連した良好な一致は、他のクラスのメンバーへのアクセスには影響を与えないよう、他のクラスのメンバーがアクセス権限にデータを持たない自由に変更することにしたくないということです。
2つの修飾子を導入するための権限
- 公共手段公共の意味は、それが任意のメンバー缶へのアクセスを表現するために、最小特権のメンバーを変更し、ポイントがあることに注意してJavaソースファイルは一つだけクラスがパブリック宣言されていることができます。
- defautのデフォルトレベルは、メンバーがシンボルを変更していない、他のメンバーは、同じパッケージ内でアクセスすることができます。
- 保護手段によって保護され、それが親クラスのサブクラスが継承することができ表し、注意がします。そのサブクラスにアクセスするために、そのメンバーによって変更と同じパッケージにクラス外に変更されません。
- プライベートプライベート手段;最高権威は、内部クラスメンバへのアクセスを許可することを示し、ポイントに注意を払うクラスの外を変更することはできません。
修飾子 | 同じクラス | 他のクラスとパッケージ | 異なるサブクラスパケット | Feizi異なるパケットクラス |
---|---|---|---|---|
公衆 | 真 | 真 | 真 | 真 |
保護されました | 真 | 真 | 真 | |
デフォルト | 真 | 真 | ||
民間 | 真 |
三つの詳細な説明
3.1公衆
遊星型で作成Com.youku1327.base.authority2パッケージは、部材表さ輝き光は、対応する公開変形プロセスを用いgetShine方法は光手段を得ることです。
package com.youku1327.base.authority2;
/**
* @Author lsc
* <p> 星球类 </p>
*/
public class Planet {
private String shine = "好耀眼";
public String getShine(){
return shine;
}
}
com.youku1327.base.authority2.Planetインポートを使用して、パッケージcom.youku1327.base.authority1 ZSZXZのクラスを作成し、インポートプラネット惑星クラスには、mainメソッドで作成したクラスの惑星、メソッド呼び出しを光を得るために、良好な出力を得ることですまぶしい;最低の公共機関を確認、しているすでにサブクラスは異なるパッケージ間でアクセスすることができます。
package com.youku1327.base.authority1;
import com.youku1327.base.authority2.Planet;
/**
* @Author lsc
* <p> </p>
*/
public class ZSZXZ {
public static void main(String[] args) {
// 创建星球实体
Planet planet = new Planet();
// 访问公有成员
String shine = planet.getShine();
// 好耀眼
System.out.println(shine);
}
}
3.2保護
惑星getShineの方法は、保護されたクラスのシンボルを変更し、
package com.youku1327.base.authority2;
/**
* @Author lsc
* <p> 星球类 </p>
*/
public class Planet {
private String shine = "好耀眼";
protected String getShine(){
return shine;
}
}
(あなたが相続キーワードを示して延びているの意味を理解すれば、初心者)com.youku1327.base.authority1継承クラス惑星で惑星のような地球を作成、継承されたメソッドがgetShine方法で、その後、メインクラスで地球のインスタンスを作成し、コールgetShine方法、実際に惑星getShineのメソッド呼び出し(super.getShine()、スーパー・シニア手段は、親クラスを表す);親クラスのメンバーが変更保護されて呼び出すことができます異なるパッケージのサブクラスを確認します。
package com.youku1327.base.authority1;
import com.youku1327.base.authority2.Planet;
/**
* @Author lsc
* <p> 地球类</p>
*/
public class Earth extends Planet {
@Override
protected String getShine() {
// 调用了父类的getShine方法
return super.getShine();
}
// 执行前注释掉ZSZXZ中的main方法
public static void main(String[] args) {
// 创建地球
Earth earth = new Earth();
// 好耀眼
System.out.println(earth.getShine());
}
}
元ZSZXZクラスgetShineで囲碁バックと表情が与えられて見つけた、異なるパッケージに非子クラスを検証するために、保護の使用はアクセス不能に変更。
3.3デフォルト
次のようにメソッドモディファイgetShineは、惑星の惑星のクラスを削除しました
package com.youku1327.base.authority2;
/**
* @Author lsc
* <p> 星球类 </p>
*/
public class Planet {
private String shine = "好耀眼";
String getShine(){
return shine;
}
}
クラス与えられる前に、地球の発見により、我々はコメント地球全体のクラスを入れて、修正デフォルトパッケージアクセスのメンバーは自慢できないことを検証します。
私たちは、成功した実行のメソッド呼び出しgetShine惑星、惑星ムーンパッケージタイプの同じレベルの下に作成、検証、デフォルト修正メンバーが同じパッケージにアクセスすることができます。
package com.youku1327.base.authority2;
/**
* @Author lsc
* <p> </p>
*/
public class Moon {
public static void main(String[] args) {
// 创建星球实体
Planet planet = new Planet();
// 访问公有成员
String shine = planet.getShine();
// 好耀眼
System.out.println(shine);
}
}
プライベート3.4
プライベートにメソッドモディファイgetShineプラネット惑星クラス。
package com.youku1327.base.authority2;
/**
* @Author lsc
* <p> 星球类 </p>
*/
public class Planet {
private String shine = "好耀眼";
private String getShine(){
return shine;
}
}
修飾されたプライベートで使用することができるgetShine()は、同じクラスのメンバーを確認するために、フィールドに輝くことができる。getShine月以前の方法は、エラーに見出される主要クラスのメソッドは、異なるクラス専用にアクセスすることができないパッケージを検証します;
private String shine = "好耀眼";
private String getShine(){
return shine;
}
}
修飾されたプライベートで使用することができるgetShine()は、同じクラスのメンバーを確認するために、フィールドに輝くことができる。getShine月以前の方法は、エラーに見出される主要クラスのメソッドは、異なるクラス専用にアクセスすることができないパッケージを検証します;