導航:首頁 > 編程語言 > javasuper用法

javasuper用法

發布時間:2023-07-22 10:36:40

java中的super()是什麼

要說super就先要說this。
"this",作為一個特殊的關鍵字,它的規則如下:
1。可以表示構造函數傳遞。this(a,b)表示調用另外一個構造函數。這裡面的this就是一個特殊語法,不是變數,沒有什麼類型。
2。可以在一個類的非static成員內部使用,表示當前這個對象。此時,this就是一個final的普通變數,它有靜態類型,就是這個類C本身;它有動態類型,就是當前這個對象的類型。你可以對它調用成員函數,把它傳遞給別的函數,等等等等。只要一個C類型的final變數可以出現的地方,它就可以出現。

"super"。它和"this"類似,但是也有不同的地方。
1。表示調用父類的構造函數。也是一個特殊語法,不是變數,沒有什麼類型。

2。可以在一個類的非static成員內部使用。比如super.method()。
但是,注意,這個super.method()只是長得跟some_var.method()一樣,一個語法糖而已。實質上,"super"根本不是一個變數。

為什麼不是?因為如果是就壞了。java裡面有一個金科玉律:任何public非static函數的調用都是多態的。
所以,如果super是個變數,也指向當前對象,那麼,不管super的靜態類型是什麼super.method()必然調用的是子類的那個版本,而不會是我們期望的,靜態地選擇父類的那個版本。

所以,你只要把super.xxx看成一個特殊的語法,比如理解為「super::xxx」就好了。

既然super不是一個變數,那麼不能把它象一個普通變數那樣"==",或者傳遞給某個函數就看起來很正常了,是么?何況,你其實也用不著它,有this你這些要求就都可以辦到了。

3。super的另外一個作用是調用父類的protected函數。只有通過"super"這個魔咒,我們才能操作父類的protected成員,別無它法。

㈡ java中的super(s)是什麼意思

在java中super表示調用父類(基類)的函數:
如果super()表示調用父類的構造函數,
super.method表示調用父類中的函數(非構造函數)

你這里是調用java.awt.Frame的構造函數。

㈢ java 中super 的用法及意義

super出現在繼承了父類的子類中。
有三種存在方式:
第一種
super.xxx;(xxx為變數名或對象名)
這種方法意義為,獲取父類中的名字為xxx的變數或方法引用。
使用這種方法可以直接訪問父類中的變數或對象,進行修改賦值等操作
第二種
super.xxx();(xxx為方法名)
這種方法意義為,直接訪問並調用父類中的方法。
第三種
super();
這種方法意義為,調用父類的初始化方法,其實就是調用父類中的public xxx()方法;

㈣ Java中super是什麼意思

super在java的子類中指代父類引用

java中,super的幾種用法:

1、子類的構造函數如果要引用super的話,必須把super放在函數的首位

classBase{
Base(){
System.out.println("Base");
}
}

publicclassChecketextendsBase{
Checket(){
super();//調用父類的構造方法,一定要放在方法的首個語句
System.out.println("Checket");
}

publicstaticvoidmain(Stringargv[]){
Checketc=newChecket();
}
}

如果想用super繼承父類構造的方法,但是沒有放在第一行的話,那麼在super之前的語句,肯定是為了滿足自己想要完成某些行為的語句,但是又用了super繼承父類的構造方法。那麼以前所做的修改就都回到以前了,就是說又成了父類的構造方法了。


2、在Java中,有時還會遇到子類中的成員變數或方法與超類(有時也稱父類)中的成員變數或方法同名。因為子類中的成員變數或方法名優先順序高,所以子類中的同名成員變數或方法就隱藏了超類的成員變數或方法,但是我們如果想要使用超類中的這個成員變數或方法,就需要用到super.

classCountry{
Stringname;

voidvalue(){
name="China";
}
}

classCityextendsCountry{
Stringname;

voidvalue(){
name="Hefei";
super.value();//不調用此方法時,super.name返回的是父類的成員變數的值null
System.out.println(name);
System.out.println(super.name);
}

publicstaticvoidmain(String[]args){
Cityc=newCity();
c.value();
}
}

為了在子類中引用父類中的成員變數name和方法value(),在代碼中使用了super、super.name和super.value(),若不調用super.value()時,super.name返回父類成員變數默認值null,調用此方法時,super.value()方法把成員變數name賦值為China,再利用super.name調用父類的成員變數的值。


另外,要注意的是super.name調用的是成員變數的

classCountry{

Stringname="xianfan";

Stringvalue(Stringname){
name="China";
returnname;
}
}

classCityextendsCountry{
Stringname;

Stringvalue(Stringname){
name="Hefei";
super.value("失敗");//不調用此方法時,super.name返回的是父類的成員變數的值null
System.out.println(name);
System.out.println(super.name);
returnname;
}

publicstaticvoidmain(String[]args){
Cityc=newCity();
c.value("成功");
}
}

結果為:Hefei

xianfan

此時,super.name返回的值是父類成員變數的值xianfan,而此時的super.value()方法是不起作用的。

3、用super直接傳遞參數:

classPerson{
publicstaticvoidprt(Strings){
System.out.println(s);
}

Person(){
prt("APerson.");
}

Person(Stringname){
prt("Apersonnameis:"+name);
}
}

{
Chinese(){
super();//調用父類構造函數(1)
prt("Achinese.");//(4)
}

Chinese(Stringname){
super(name);//調用父類具有相同形參的構造函數(2)
prt("hisnameis:"+name);
}

Chinese(Stringname,intage){
this(name);//調用當前具有相同形參的構造函數(3)
prt("hisageis:"+age);
}

publicstaticvoidmain(String[]args){
Chinesecn=newChinese();
cn=newChinese("kevin");
cn=newChinese("kevin",22);
}
}

結果為:A Person.


A chinese.

A person name is:kevin

his name is:kevin

A person name is:kevin

his name is:kevin

his age is:22

在這段程序中,this和super不再是像以前那樣用「.」連接一個方法或成員,而是直接在其後跟上適當的參數,因此它的意義也就有了變化。super後加參數的是用來調用父類中具有相同形式的構造函數,如1和2處。this後加參數則調用的是當前具有相同參數的構造函數,如3處。當然,在Chinese的各個重載構造函數中,this和super在一般方法中的各種用法也仍可使用,比如4處,你可以將它替換為「this.prt」(因為它繼承了父類中的那個方法)或者是「super.prt」(因為它是父類中的方法且可被子類訪問),它照樣可以正確運行。

㈤ JAVA中super()的用法

當在子類的構造函數需要調用父類的構造函數時,實用super(),調用,當然super(),裡面可以加形參(根據具體的父類的構造函數是否需要形參),這條語句必須寫在子類構造函數的第一句

閱讀全文

與javasuper用法相關的資料

熱點內容
什麼app不花一分錢買東西 瀏覽:373
布林四線指標源碼 瀏覽:968
單片機的控制板 瀏覽:218
襄陽軟體編程 瀏覽:841
sshpass命令 瀏覽:106
logo伺服器怎麼下載 瀏覽:508
如何ftp連接伺服器 瀏覽:674
creo自動編程 瀏覽:161
雲伺服器在電腦怎麼開 瀏覽:432
ipad相冊如何在文件夾中建文件夾 瀏覽:621
和家親這個app有什麼用 瀏覽:575
什麼app裡面有種樹打折 瀏覽:374
編程外掛入門教學 瀏覽:974
pdf黑白轉彩色 瀏覽:725
英國投資加密貨幣嗎 瀏覽:887
看完程序員那麼可愛後的感受 瀏覽:131
廣播在什麼APP能聽 瀏覽:678
阿克曼小車連接什麼app 瀏覽:773
all100編程器 瀏覽:182
加密的內存卡能用嗎 瀏覽:923