親クラスのコンストラクターを呼び出すためにスーパーキーワードを継承するJAVAの注意事項
- 1. サブクラスがオブジェクトを作成すると、デフォルトでは最初に親クラスのコンストラクターが呼び出されます。
- 2. サブクラスのコンストラクタの最初の行にデフォルトで super() が存在するため、 – 親クラスの引数なしの構築を呼び出すことを意味する
- 3. 親クラスにパラメーターなしの構造がない場合、super (パラメーター); を使用して、親クラスの他のパラメーターを含む構造を手動で呼び出すことができます
- 注: サブクラスは、パラメーターなしまたはパラメーター付きのいずれであっても、親クラスのコンストラクターを呼び出す必要があります。いずれかを選択してください。
- 4. スーパー コール コンストラクタは、コンストラクタ 1 の最初の行にある必要があります。
- 5.施工方法は継承できない!理由: コンストラクターの必要なメソッド名はこのクラスのクラス名でなければならないため、親クラスの名前を持つコンストラクターはサブクラスに表示できません
package cn.tedu.oop3;
/**本类用于测试super的用法
* 1.子类在创建对象时,默认会先调用父类的构造方法
* 2.原因是子类构造函数中的第一行默认存在super();--表示调用父类的无参构造
* 3.当父类没有无参构造时,可以通过super(参数);手动调用父类的其他含参构造
* 注意:子类必须调用父类的是一个构造函数,不管是无参还是含参,选一个即可
* 4.super调用构造函数要求必须在构造函数的第1行1
* 5.构造方法不可以被继承!原因:因为构造函数的要求方法名必须是本类的类名
* 不能在子类中出现一个父类名字的构造方法*/
public class TestSuper2 {
public static void main(String[] args) {
//5.触发父类的两个构造函数创建对象
// Father2 f1 =new Father2();//触发父类的无参构造
Father2 f2 =new Father2(88);//触发父类的含参构造
//6.创建子类对象进行测试
Son2 s = new Son2();
}
}
//1.创建父类
class Father2{
//3.创建父类无参构造与含参构造
// public Father2(){
// System.out.println("我是父类的无参构造");
// }
public Father2(int n){
System.out.println("我是父类的含参构造"+n);
}
}
//2.创建子类
class Son2 extends Father2{
//4.创建子类的无参构造
public Son2(){
// super();//表示调用父类的无参构造
super(99);//表示父类的含参构造
System.out.println("子类的无参构造");
}
}