當前位置:首頁 » 編程語言 » java父類構造

java父類構造

發布時間: 2022-09-23 08:28:25

『壹』 在java中用來調用父類構造方法的關鍵字是

java中的關鍵字super有兩種用法。

一、調用父類的構造方法,如:

class A

{

A(String s)

{

System.out.println(s);

}

}

class B extends A

{

B()

{

super("父類");

System.out.println("子類");

}

}

完整例子如下圖:

『貳』 高人指點一下java父類構造方法

Weapon類沒有無參構造方法,Tank類不能隱式調用Weapon類的無參構造方法,因此不能使用隱式構造方法,必須顯式定義Tank類的構造方法,並在Tank類的構造方法第一行調用父類的構造方法super(int, int)。

『叄』 JAVA中 子類與父類構造方法的關系 個人理解

編寫JAVA作業時在繼承的環節發現了一些錯誤,希望總結一些規律:(以下全部屬於自己歸納,可能有問題)
一句話概括就是:子類一定會調用(不是繼承)父類的構造方法!
即遵循一個原則:子類的構造一定是在父類已構造的基礎上!
這句話要分為幾種情況來理解(下面只討論父類有構造函數):
子類構造函數自動調用super() (也可以手動加上)
但如果父類只有含參數的構造方法,那麼子類必須申明一個構造方法,其中包含對super(args)的調用
一、父類含有無參構造函數
1、子類沒有構造方法或者含有無參的構造方法:
這種情況,都會默認地調用super()
2、子類含有有參數構造方法:
同樣會在首句默認調用super() //其實跟情況1類似
二、父類含有含參數的構造方法,不含無參數的構造方法:
子類沒得選擇:
子類必須申明一個構造方法(且含super的args),且方法里要首先調用super(args),否則報錯。
三、父類含 含參數的構造方法和無參的構造方法:
此時子類可以選擇性調用:
可以無構造方法:仍會默認調用super()
也可以有構造方法:其中會默認地調用super(),你也可以在開頭加上這句,如果你不希望調用父類默認的無參方法,那麼在 子類構造方法 中調用 父類含參構造方法。
上述看似情況復雜,其實基於其原則理解並不難。
綜上:java為了保持 子類的構造基於父類的構造 這一原則,子類構造時必須通過某些方式首先調用父類的構造方法,否則會報錯。

『肆』 java中,父類的構造方法不能被子類繼承,對嗎

不對。。子類默認繼承父類的構造方法 子類創建對象時默認調用自身的空構造器,並在子類構造器中隱式的調用super() 即調用父類的空構造器,如果父類重載了構造器,那麼子類必須初始化父類構造器否則編譯錯誤!

classAnimal{
privateStringname;
//重載父類構造器
Animal(Stringname){
this.name=name;
}

}

classDogextendsAnimal{
//必須加上
//Dog(Stringname){
//super(name);
//}
}

classTest{
publicstaticvoidmain(String[]args){
Animala=newDog();
//首先調用Dog空構造器Dog(){}構造器中第一句話為super()但父類已覆蓋空構造器所以
//編譯產生錯誤應添加子類構造器初始化父類構造器
//

}
}

『伍』 java中,子類調用父類函數構造函數中被重寫的方法,輸出語句為什麼是默認值

1,Java的函數調用是虛擬調用,對象名.方法名,調用的都是其真實類型的函數,就是說,對象實際上是一個dog,那麼調用的就是dog的重寫方法。父類構造器之所以被調用,是因為子類的構造器會調用父類的構造器,整個過程實際上是dog的構造。

2,這個和初始化順序有關,new對象時,會先初始化成員變數再調用構造器,所以初始化順序是:父類的成員變數->父類構造器->子類成員變數->子類構造器

也就是說,父類構造器中調用getAge的時候,dog的成員變數還沒有初始化

等到子類構造器中再調用一次的時候,已經完成初始化。

『陸』 java中調用父類構造方法

非靜態的變數在別的類裡面是不能直接用的。。若要使用的話,就要通過實例化該父類,通過【實例名.屬性名】來訪問、、、你自己看一下把!! class
Point{
int
x,y;
static
int
c;
public
Point(int
m,int
n){
x=m;
y=n;
System.out.println("帶參數的父類給實例化了。x:"+x+"
y:"+y);
}
public
Point(){
c++;
System.out.println("第"+c+"次被創建子類對象");
}
}
public
class
Point3D
extends
Point{
public
static
void
main(String
[]
args){
Point
m1=new
Point3D();
Point
m2=new
Point3D();
Point
m3=new
Point3D();
System.out.println(Point.c);
Point
m4
=
new
Point(7
,
5);
System.out.println("父類x屬性的值為:"+m4.x);
System.out.println("父類y屬性的值為:"+m4.y);

}
}

『柒』 「java」中父類構造方法的調用怎麼操作

Father a = new Father(baba); 這跟直接調用另一個類並且實例化對象並沒多大區別把,不用繼承也能做到。調用父類的構造函數用super();關鍵字

public class Father {
public Father()
//{
//System.out.println("父類無參構造方法");
//} //不在父類中顯式聲明
public Father(String name)
{
System.out.println("父類有參構造方法");
}
}//父類

public class son extends Father {
public son()

{
super();

System.out.println("子類無參構造方法");
}//子類super();調用父類無參構造方法
public son(String name)
{
super(name);
System.out.println("子類有參構造方法");

}
}//子類
系統在Father類中默認一個無參構造函數,若不在父類中顯式的聲明,子類super();調用時提示父類的構造方法是未定義的。必須要顯式的聲明。不會調用默認的無參構造函數。用個編譯器具體編譯一下,看看到底報的什麼錯,對症下葯。

『捌』 java 子類調用父類構造方法會創建父類對象嗎

調用初始化方法並不代表會生成對象,你的java代碼中出現new關鍵字加上構造方法的調用,只會生成一個對象,其父類對象不會生成,所以調用父類為抽象類的構造方法完全是合理的。






抽象類中的構造方法其實是用來給繼承的子類來用的,因為構造方法相當於初始化方法,當子類調用構造方法時必須調用父類構造方法,所以你可以在子類產生對象時抽象類中按需求初始化抽象類中的欄位以及執行一些初始化代碼。其實並不是一定要生成某個類的實例才調用構造方法,子類也需要調用父類構造方法。


子類在創建實例後,類初始化方法會調用父類的初始化方法(除了Java.lang.Object類,因java.lang.Object類沒有父類),而這種調用會逐級追述,直到java.lang.Object的初始化方法。這個地方我說的是初始化方法,而不是構造方法,因為構造方法是相對於java源程序而言,而編譯後的class文件是初始化方法即" <init>"方法(紅色部分為方法名)。

『玖』 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裡面一般不叫函數,叫方法,這是Java的一個小習慣。

你這個問題原因很簡單。

首先,任何類都有構造方法,難怕是你不寫,也會默認你有一個有無參構造方法。,所以你的A裡面就會有一個叫A()的構造方法。

當你new A()時,默認你有一個有無參構造方法A()的方法里的第一句,會自動加上一個super();的方法,這句就是調用父類構造方法的意思,這是java規定的規則。

你可以嘗試一下,在A里寫一個構造方法:

A(){

super(); //這個一定要放在第一句

System.out..XX;

}

這與你不寫super()這句效果是一樣的,因如果沒寫,java會默認在第一句加上super。

熱點內容
我的世界畸變生存伺服器 發布:2025-01-10 12:02:51 瀏覽:156
長安unit卓越版有哪些配置 發布:2025-01-10 11:25:25 瀏覽:99
python安裝後怎麼打開 發布:2025-01-10 11:08:35 瀏覽:872
phpjava架構 發布:2025-01-10 10:56:06 瀏覽:385
python二維排序 發布:2025-01-10 10:56:00 瀏覽:608
南水北調怎麼配置 發布:2025-01-10 10:55:27 瀏覽:121
廣數980系統參數密碼是多少 發布:2025-01-10 10:55:25 瀏覽:577
androidhtml字體 發布:2025-01-10 10:55:01 瀏覽:787
資料庫連接工廠模式 發布:2025-01-10 10:51:00 瀏覽:488
mac文件夾路徑設置 發布:2025-01-10 10:48:12 瀏覽:803