20200721-オブジェクト指向のカプセル化と継承
1.クラスのメモ
カプセル化:使用する出口を保護します
パッケージ:アクセス修飾子
public:public
protected:サブクラスが継承するときに使用されます;パッケージレベルのプライベート+サブクラスのデフォルト修飾子:パッケージレベルのプライベート;
プライベートは現在のクラスが配置されているパッケージに表示されます:非公開、あなただけが閲覧できます
static:属性を変更する場合:すべてのクラスに1つのストレージスペース
共通属性:1つのオブジェクトに1つのストレージスペース
メソッドを変更する場合:クラスname.method name()を介して呼び出すことができます
通常のメソッドは
静的メソッドを直接呼び出すことができ、通常のメソッド静的メソッドは直接共通を呼び出すことができませんプロパティと静的プロパティ
静的コードブロック:クラスに初めてアクセスしたときに1回だけ実行されます。
これとスーパーは使用できません。
静的はローカル変数を定義できません。静的変数はメンバー変数である必要があります
継承継承
中にJavaでコードの再利用を実装する重要な手段の1つ。Javaは単一ルート継承のみをサポートします。つまり、クラスは直接の親クラスを1つしか持つことができません
継承:キーワードextendsサブクラスはすべての親クラスを継承し、親クラスのプライベートなものも継承されますが、サブクラスがオブジェクトを作成するとき、最初に親クラスの構築メソッドを実行し、次にサブクラスの構築メソッドを実行します
第二に、コード
親カテゴリ:ペット
public class Pet {
private String name;
private int health;
private int love;
int a;
//除了我包以外,除非继承我才能看到
protected int b;
//如果没有无参构造,继承会直接报错
public Pet() {
System.out.println("父类无参构造");
}
public Pet(String name, int health, int love) {
System.out.println("父类有参构造");
this.name = name;
setHealth(health);
setLove(love);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
if(health<0 || health>100) {
System.out.println("健康值的范围在0~100之间");
System.out.println("赋的值不满足,强行赋默认值60");
health = 60;
}
this.health = health;
System.out.println("健康值是:"+health);
}
public int getLove() {
return love;
}
public void setLove(int love) {
if(love<0 || love>100) {
System.out.println("爱心值的范围在0~100之间");
System.out.println("赋的值不满足,强行赋默认值60");
love = 60;
}
this.love = love;
System.out.println("爱心值是:"+love);
}
public void show(){
System.out.println("宠物的自白");
System.out.println("我叫"+getName()+",健康值是:"+getHealth()
+",和主人的亲密度"+getLove());
}
}
サブカテゴリ:猫
public class Cat extends Pet{
public Cat() {
System.out.println("子类无参构造");
}
public Cat(String name, int health, int love) {
super(name,health,love);//super关键字指代父类对象,私有类一样除外
//这里直接有参构造,但是没有逻辑
System.out.println("子类有参构造");
}
public void show(){
super.show();
}
}
テストカテゴリ:猫
public class TestCat {
public static void main(String[] args) {
/*//无参构造方法也都是继承过来的,父类是object
Cat c = new Cat();
c.setName("加菲");
c.setHealth(123);
c.setLove(45);
c.show();
Pet p=new Pet("miaomiao",12312,123);
c.show();*/
//走父类的无参构造,目的,用来构建对象,创建对象的功能是从object拿过来的
Cat cat=new Cat("miaomiao",90,70);
cat.show();
}
}