パッケージ
パッケージは、クラス内の隠されたクラス状態情報であり、それは外部プログラムへの直接アクセスを許可しない、および動作などの方法によって提供される隠された情報にアクセスするために、オブジェクト指向の三つの特徴の一つです。
パッケージの特定のステップ
視認性の特性を修正1.プロパティへのアクセスを制限するために
2対の割り当て方法及びこれらにアクセスするための各属性の値を作成する方法は属性
割り当て方法で3.に加えアクセス属性制御文
給付パッケージ
、クラス1の背後に実装詳細
所定のプログラム方法を介してのみアクセスデータを可能にする。2.
3を容易に無理制限動作、アクセス制御文に付加することができます
アクセスコントロールの複数のメンバ変数とメソッドは、以下の違いによって修飾されたときにパッケージが使用される:
プライベート:メンバ変数とメソッドは、クラスの可視性を有するクラスのその定義にのみアクセス可能
デフォルト:メンバ変数とメソッドを、唯一パッケージのその定義にアクセスすることができ、パッケージた視認性を
保護:アクセスを同じクラスのバッグであってもよいし、アクセスに異なるパッケージで同じ項目のサブクラスである
すべてのクラスは同じプロジェクトにアクセスすることができます。publicは最もアクセスされたプロジェクトの可視性、と
/**
* 宠物狗狗类,使用权限修饰符private和public进行封装
*/
class Dog {
private String name="无名氏";
private int health=100;
private int love=0;
private String strain="聪明的拉布拉多犬";
/**
* 通过构造方法指定狗狗的昵称,品种
*/
public Dog(String name,String strain){
this.name=name;
this.strain=strain;
}
/**
* 通过吃饭增加健康值
*/
public void eat(){
if(health>=100){
System.out.println("狗狗需要多运动啊!");
}else{
health=health+3;
System.out.println("狗狗吃饱饭了!");
}
}
/**
* 通过玩游戏增加与主人的亲密度,减少健康值
*/
public void play(){
if(health<60){
System.out.println("狗狗生病了!");
}else{
System.out.println("狗狗正在和主人玩耍。");
health=health-10;
love=love+5;
}
}
/**
* 读取狗狗的昵称
*/
public String getName(){
return name;
}
/**
* 读取狗狗的健康值
*/
public int getHealth(){
return health;
}
/**
* 读取狗狗与主人的亲密度
*/
public int getLove(){
return love;
}
/**
* 读取狗狗的品种
*/
public String getStrain(){
return strain;
}
/**
* 输出狗狗的信息
*/
public void print(){
System.out.println("宠物的自白:\n我的名字叫"+this.name+",健康值是"+this.health+",和主人的亲密度是"+this.love+",我是一只"+this.strain+"。");
}
public static void main(String[] args) {
Dog dog=new Dog("欧欧","酷酷的雪纳瑞");
dog.play();
System.out.println("健康值是"+dog.getHealth());
dog.eat();
dog.print();
}
}
この
この競合は、メンバ変数を呼び出すと、同じ名前を使用してメンバ変数とローカル変数を解きます。
public void setName(String name){
this.name=name;//成员变量和局部变量同名,必须用this
}
public void setName(String xm){
name=xm;//成员变量和局部变量不同命,this 可以省略
}
メンバ変数に、このコールを使用します
public void play(int n){
health =health-n;
this.print();//this可以省略,直接调用print();
}
唯一のコンストラクタで使用することが中心のコンストラクタメソッドは、最初の文のコンストラクタにする必要があり、このコールを使用します
public Penguin(String name,String sex){
this.name=name;
this.sex=sex;
}
public Penguin(String name,int health,int love,String sex){
this(name,sex);//调用重载的构造方法
this.health=health;
this.love=love;
}
この参照は、これが唯一のインスタンス変数とインスタンスメソッドとコンストラクタ呼び出すことができるように、オブジェクト自体の内部で参照しているので
、このクラス変数とクラスメソッドを呼び出すことができない、またローカル変数を呼び出します