① java,中的子類繼承父類,子類如何調用父類的構造函數舉一個簡單的例子加註釋說明
子類無條件調用父類的無參構造函數,實例:
父類:
package com.test;
public class TestFatherClass {
private String name="abc";
TestFatherClass(){
System.out.println("1、這是父類的無參構造函數");
}
TestFatherClass(String a){
System.out.println("2、這是父類的有參構造函數");
}
}
子類:
package com.test;
public class TestChildClass extends TestFatherClass{
TestChildClass(){
System.out.println("3、這是子類的無參構造函數");
}
TestChildClass(String str){
System.out.println("4、這是子類的有參構造函數");
}
public static void main(String[] args) {
System.out.println("實例化對象時:(無參)");
TestChildClass test = new TestChildClass();
System.out.println("實例化對象時:(有參)");
TestChildClass test2 = new TestChildClass("adad");
}
}
輸出結果:
② Java中子類一定要調用父類的構造函數嗎
不需要,子類可以有自己的構造函數,也可以調用父類的。不過實例化子類的時候會先調用父類的構造函數。
③ 在java語言里如何在子類中調用父類的有參構造函數
如果你是想在子類的構造函數中調用父類構造函數,則需要在子類的構造函數的函數體第一行(注釋語句除外)使用:super(參數列表)的方式調用,該參數列表與父類有參構造函數聲明的參數列表一致,如果你不是在子類構造函數中調用,則無法直接調用父類構造函數,這時創建一個父類對象(通過你想調用的有參父類構造函數創建),就間接調用了該構造函數。
④ java 子類調用父類構造方法會創建父類對象嗎
調用初始化方法並不代表會生成對象,你的java代碼中出現new關鍵字加上構造方法的調用,只會生成一個對象,其父類對象不會生成,所以調用父類為抽象類的構造方法完全是合理的。
抽象類中的構造方法其實是用來給繼承的子類來用的,因為構造方法相當於初始化方法,當子類調用構造方法時必須調用父類構造方法,所以你可以在子類產生對象時抽象類中按需求初始化抽象類中的欄位以及執行一些初始化代碼。其實並不是一定要生成某個類的實例才調用構造方法,子類也需要調用父類構造方法。
子類在創建實例後,類初始化方法會調用父類的初始化方法(除了Java.lang.Object類,因java.lang.Object類沒有父類),而這種調用會逐級追述,直到java.lang.Object的初始化方法。這個地方我說的是初始化方法,而不是構造方法,因為構造方法是相對於java源程序而言,而編譯後的class文件是初始化方法即" <init>"方法(紅色部分為方法名)。
⑤ 在java中用來調用父類構造方法的關鍵字是
java中的關鍵字super有兩種用法。
一、調用父類的構造方法,如:
class A
{
A(String s)
{
System.out.println(s);
}
}
class B extends A
{
B()
{
super("父類");
System.out.println("子類");
}
}
完整例子如下圖:
⑥ 在java中,子類構造器總會調用父類構造器,那麼子類構造器調用父類構造器為什麼只能調用一次呢
調用一次就夠了,每次子類需要實例化的時候,就會先調用父類的構造函數,默認是隱式調用,如果要在子類中顯式調用那麼在子類構造器中的第一行用super();就行了。。