Ⅰ java中子類一定要調用父類的構造函數嗎
不需要,子類可以有自己的構造函數,也可以調用父類的。不過實例化子類的時候會先調用父類的構造函數。
Ⅱ java中super調用父類構造函數問題
我來解釋:
如果你想用super繼承父類構造的方法
但是沒有放在第一行的話
那麼在super之前的語句
肯定是為了滿足你自己想要完成某些行為的語句
但是你又用了super繼承父類的構造方法
那麼以前所做的修改就都回到以前了
也就是說又成了父類的構造方法了
比如
class Father
{
public Father()
{String name=null;
int age=0;}
}
class Son extends Father
{
public Son()
{String name="學生";
super();}
}
//這樣子的話就會把Son裡面的name又變成了null
沒有達到你想要的效果
不知道明白沒有
累死我了
Ⅲ 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有兩種用法。
一、調用父類的構造方法,如:
class A
{
A(String s)
{
System.out.println(s);
}
}
class B extends A
{
B()
{
super("父類");
System.out.println("子類");
}
}
完整例子如下圖:
Ⅳ java調用父類的構造方法,並傳遞參數怎樣實現
class
Dad
{
String
name;
int
age;
public
Dad(){}
public
Dad(String
name,int
age)
{
this.name
=name;
this.age
=age;
}
}
class
kid
extends
Dad
{
public
kid()
{
super();
//父類構造器的調用,必須是子類構造器中的第一個語句
System.out.println("優先調用了無參構造器
");
}
public
kid(String
name,int
age)
//含參構造器中的參數列表,即包含了子類的成員變數,也包含了繼承的父類的成員變數
{
super(name,age);
//●●●父類構造器的調用,必須是子類構造器中的第一個語句
System.out.println("優先調用了含參構造器:"+this.name+"已經"+this.age);
}
}
public
class
maintest
{
public
static
void
main(String[]
args)
{
kid
kd1=new
kid();
kid
kd2=new
kid("帥哥",19);
}
}
Ⅵ Java中構造函數調用父類構造函數可以同時調用其他構造函數嗎麻煩舉例說明。
不可以,調用父類的構造方法必須在子類構造方法的第一句,隱含意思就是只能調用一個父類構造方法,否則提示錯誤。
Ⅶ 在java語言里如何在子類中調用父類的有參構造函數
如果你是想在子類的構造函數中調用父類構造函數,則需要在子類的構造函數的函數體第一行(注釋語句除外)使用:super(參數列表)的方式調用,該參數列表與父類有參構造函數聲明的參數列表一致,如果你不是在子類構造函數中調用,則無法直接調用父類構造函數,這時創建一個父類對象(通過你想調用的有參父類構造函數創建),就間接調用了該構造函數。
Ⅷ 「java」中父類構造方法的調用怎麼操作
Father a = new Father(baba); 這跟直接調用另一個類並且實例化對象並沒多大區別把,不用繼承也能做到。調用父類的構造函數用super();關鍵字x0dx0ax0dx0apublic class Father {x0dx0apublic Father()x0dx0a//{x0dx0a//System.out.println("父類無參構造方法");x0dx0a//} //不在父類中顯式聲明x0dx0apublic Father(String name)x0dx0a{x0dx0aSystem.out.println("父類有參構造方法");x0dx0a}x0dx0a}//父類x0dx0ax0dx0apublic class son extends Father {x0dx0apublic son()x0dx0ax0dx0a{x0dx0asuper();x0dx0ax0dx0aSystem.out.println("子類無參構造方法");x0dx0a}//子類super();調用父類無參構造方法x0dx0apublic son(String name)x0dx0a{x0dx0asuper(name);x0dx0aSystem.out.println("子類有參構造方法");x0dx0ax0dx0a}x0dx0a}//子類x0dx0a系統在Father類中默認一個無參構造函數,若不在父類中顯式的聲明,子類super();調用時提示父類的構造方法是未定義的。必須要顯式的聲明。不會調用默認的無參構造函數。用個編譯器具體編譯一下,看看到底報的什麼錯,對症下葯。
Ⅸ java中,子類調用父類函數構造函數中被重寫的方法,輸出語句為什麼是默認值
1,Java的函數調用是虛擬調用,對象名.方法名,調用的都是其真實類型的函數,就是說,對象實際上是一個dog,那麼調用的就是dog的重寫方法。父類構造器之所以被調用,是因為子類的構造器會調用父類的構造器,整個過程實際上是dog的構造。
2,這個和初始化順序有關,new對象時,會先初始化成員變數再調用構造器,所以初始化順序是:父類的成員變數->父類構造器->子類成員變數->子類構造器
也就是說,父類構造器中調用getAge的時候,dog的成員變數還沒有初始化
等到子類構造器中再調用一次的時候,已經完成初始化。