受け継ぎます
フォーマット:
- サブクラスのパブリッククラス名は、親クラス名を拡張} {
public class Employee {
public void method() {
System.out.println("方法执行!");
}
}
public class Teacher extends Employee{
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.method();
}
}
スーパー
同じ名前の変数の親クラスにアクセス
public void method(){
int age = 20;
System.out.println(age); //20
System.out.println(this.age); //25
System.out.println(super.age); //30
}
リライト
@Overrideは書き換え成功するかどうかを検出することができます
注意:
戻り値は、メソッドのサブクラスであり、親は、戻り値の範囲のクラスに等しい未満でなければなりません。java.lang.Objectのは、すべてのクラスの最高共通父であります
権限のサブクラスのメソッドは、親クラスのメソッド許可修飾子よりも大きくなければなりません。
国民は>保護>(デフォルト)>プライベート、デフォルトでは、キーワードではありませんが、何も書いていない空白のままにします。
設計の原則
すでに使用中のクラスについては、変更されないようにしてみてください、共通のコンテンツのどの再利用する新しいクラスを定義して、新しいコンテンツの変更を追加することをお勧めします
特長アクセス親子クラスのコンストラクタ
注意:
- デフォルトの暗黙的なスーパー()の呼び出しを持っているサブクラスのコンストラクタので、必ずサブクラスを呼び出した後、親を呼び出すことです。
- あなたは、スーパークラスのコンストラクタのオーバーロードを呼び出すためにsuperキーワードによって構築することができます
- 親クラスのコンストラクタは、スーパーサブクラスのコンストラクタの最初のステートメントではなく、複数回の超構造と呼ばれるサブクラスのコンストラクタでなければなりません呼び出します
public class Father {
public Father(){
System.out.println("父类构造方法");
}
}
public class Son extends Father {
public Son(){
System.out.println("子类构造方法");
}
public static void main(String[] args) {
Son son = new Son();
}
}
親クラスのコンストラクタを呼び出しの引数は、スーパーで過負荷どこ
public Father(int age){
System.out.println(age);
}
public Son(){
super(13);
System.out.println("子类构造方法");
}
public static void main(String[] args) {
Son son = new Son();
}
概要:サブクラスは指定されたスーパーコールの書き込みによって書かれたギフトスーパー()は、最初の行でなければなりません書いていない、親クラスのコンストラクタを呼び出す必要があります。
この使用方法
public class Daughter {
public Daughter(){
this(23); // 本类的无参构造,调用本类的有参构造。
}
public Daughter(int n){
}
}
- クラスのメンバメソッドでは、このクラスのメンバ変数にアクセスします。
- 本クラスのメンバは、このクラスのアクセス方法の他のメンバーの方法で。
- 本発明の方法において、コンストラクタ、クラスメソッドに他の構成アクセス。(これは(...)の呼び出しは、コンストラクタ、一つだけの最初のステートメントでなければなりません。)
継承機能(重要)
Java言語は、単一継承であります
抽象メソッド
抽象的なキーワード、括弧を削除し、直接セミコロンプラス
クラスは抽象への書き込み前に、方法は、抽象クラスでなければならない抽象クラス
public abstract class Animal {
// 抽象方法
public abstract void eat();
public void method(){
}
}
抽象メソッドやクラスを使用する方法
抽象クラスは、直接、新しいオブジェクトを作成することはできません。
サブクラスで抽象親クラスを継承しなければなりません。
サブクラスは親がこの方法は体の中括弧ではなく、抽象的なキーワード抽象メソッドを削除し、すべての抽象メソッドをオーバーライドするオーバーライドする必要があります。
使用サブクラスのオブジェクトを作成します。
public abstract class Animal { // 抽象方法 public abstract void eat(); public void method(){ System.out.println("执行了animal方法"); } }
public class Dog extends Animal{ public void eat(){ System.out.println("小狗吃东西"); } }
public class Demo01 { public static void main(String[] args) { Dog dog = new Dog(); dog.eat(); } }
継承されたクラスは、すべての抽象メソッド、または抽象クラスをオーバーライドしない場合。
ボーナスパッケージ演習
要約:
大文字のパラダイム
サブクラスは、getセットを持つ親クラスのプロパティを取得します。
public class User { private String name; private double money; public User() { } public User(String name, double money) { this.name = name; this.money = money; } public void show(){ System.out.println("我是"+name+",有"+getMoney()+"元"); } public String getName() { return name; } public double getMoney() { return money; } public void setName(String name) { this.name = name; } public void setMoney(double money) { this.money = money; } }
public class Host extends User{ public Host() { } public Host(String name, double money) { super(name, money); } public ArrayList<Double> send(double gift, int count){ ArrayList<Double> moneyArray = new ArrayList<>(); double money = super.getMoney() - gift; if(gift > getMoney()){ System.out.println(getMoney()); System.out.println("余额不足"); return moneyArray; } for (int i = 0; i < count; i++) { if(i==count-1){ double lastGift = gift; moneyArray.add(lastGift); }else{ double perGift = new Random().nextDouble()*(Math.floor(gift)); gift -= perGift; moneyArray.add(perGift); } } setMoney(money); return moneyArray; } }
public class Customer extends User{ public Customer() { } public Customer(String name, double money) { super(name, money); } public double receive(ArrayList<Double> moneyArray){ int index = new Random().nextInt(moneyArray.size()); double delta = moneyArray.get(index); moneyArray.remove(index); super.setMoney(super.getMoney() + delta); return delta; } }
public class Demo02Test { public static void main(String[] args) { Host host = new Host(); Customer customer1 = new Customer(); Customer customer2 = new Customer(); Customer customer3 = new Customer(); Customer customer4 = new Customer(); host.setName("群主"); customer1.setName("二哈"); customer2.setName("三哈"); customer3.setName("四哈"); customer4.setName("五哈"); host.setMoney(29); customer1.setMoney(0); customer2.setMoney(0); customer3.setMoney(0); customer4.setMoney(0); ArrayList<Double> res = host.send(27, 4); host.show(); double r1 = customer1.receive(res); customer1.show(); double r2 = customer2.receive(res); customer2.show(); double r3 = customer3.receive(res); customer3.show(); double r4 = customer4.receive(res); customer4.show(); System.out.println(r1 + r2 + r3 + r4); } }