ヒント:記事を書いた後、目次を自動的に生成できます。生成方法については、右側のヘルプドキュメントを参照してください。
記事のディレクトリ
序文
Javaの継承は3つの主要な機能の1つです。ここで注意しましょう。C++の継承とは少し違いがあるので、将来の学習の便宜のために整理しました。大物が間違った場所を指摘してくれることを願っています。 。
1.継承の基本概念(is-a)
目的はコードの再利用またはクラスの再利用です。これはC ++とは異なります。親クラスはスーパークラスと呼ぶこともできます。キーワードは=> extends(拡張の意味)です。
2.コードサンプル
注:C ++とは異なり、Javaでの継承は単一の継承のみです。つまり、サブクラスは1つの親クラスのみを持つことができ、単一の親クラスは複数のサブクラスを持つことができます。
親の人
public class people {
public int age;
public String name;
}
サブクラスの学生、追加の学校があります
public class student extends people{
public String school;
}
主な方法
public class Main {
public static void main(String[] args) {
student s1=new student();
}
}
ご覧のとおり、私の属性はすべてパブリックであるため、サブクラスのインスタンスを作成しても親クラスにアクセスできます。プライベートの親クラスの場合は表示されません。
1.スーパーと工法
すべてのクラスにはコンストラクターがあります。コンストラクターを明示的に作成しない場合、コンパイラーはこのクラスのパラメーターなしでコンストラクターを自動的に生成します。
親クラスに構築メソッドがあり、構築メソッドにパラメータがある場合、コンパイラは引数なしの構築メソッドを自動的に生成しなくなりました。このとき、サブクラスインスタンスを作成する場合は、明示的に構築を呼び出す必要があります。親クラスのメソッド(super)を指定し、パラメータを渡します。そうしないと、親クラスインスタンスを作成できず、コンパイルエラーが発生します。
注:サブクラスインスタンスを作成する場合、親クラスインスタンスが最初に作成されます
public class student extends people{
public String school;
public student(int age, String name, String school) {
super(age, name);
this.school = school;
}
}
2.特別な知識ポイント
サブクラスと親クラスの属性が同じ場合は、superキーワードを使用して親クラスの属性を取得します。
public class student extends people{
public String school;
public int age=10;
public void func(){
System.out.println(age);
System.out.println(super.age);
}
}
継承が複雑すぎると、メンテナンスコストが非常に高くなります。クラスが継承されないようにするには、finalキーワードを使用できます。
final class people {
public int age=100;
public String name;
}
現時点では、学生クラスは継承できません
3.組み合わせ(has-a)
構成はコードの再利用にも使用されます。これはオブジェクト指向の重要な属性でもあります。クラスには他にもたくさんのクラスがあることがわかります
public class Homehvae {
public Cat cat=new Cat();
public Dog dog=new Dog();
public student stu=new student();
}
家には猫、犬、学生がいます。