スーパーとこれの使用
public class father{
//父类
protected String name = "小明";
public father(){
super();//他的父类是Object类
}
public father(String name){
this.name = name;
}
private void hello(){
System.out.println("hello");
}
}
public class son extends father{
//子类
public String name = "李华";
public son(){
super();//他的父类是father,默认代码,不写也不会报错
}
public son(String name){
this.name = name;
}
public void test2(){
this.test();
//super.hello();//会报错,不能使用父类中private的属性或方法
}
public void test(String name){
System.out.print(name);
System.out.print(this.name);
System.out.print(super.name);
}
}
public static void main(String[] args){
Son son = new son();
son.test("海王");
}
出力:
海王
李华
小明
結論として:
親クラスを継承することにより、サブクラスは親クラスの関連するプロパティとメソッドを使用できます
注目に値するのは次のとおりです。
- サブクラスは、親クラスのプライベートプロパティまたはメソッドを継承できません。
- super()を使用して親クラスのコンストラクターを呼び出す場合、コンストラクターの最初の行にある必要があります
- superは、サブクラスのメソッドまたは構築メソッドに含まれている必要があります(注:デフォルトのコードは構築パラメーターに隠されています
super();
。親クラスにパラメーター構築メソッドのみがあり、パラメーターなしの構築メソッドがない場合、サブクラスはsuper( )パラメータはエラーとして報告されないため、親クラスにパラメータ化された構造を書き込んだ後、パラメータのない構造を追加するか、@lambok
注釈を使用することをお勧めします。 - this:継承なしで使用でき、このクラスのプロパティまたはメソッドを参照します。
- super:継承の下でのみ使用できる親クラスオブジェクトのアプリケーションを表します。
- superとこれは、コンストラクターを同時に呼び出す必要はありません。
要約の間違いや欠陥を修正することを歓迎します。