① 在java中super是相當於哪個父類的名字么
super相當於父類的對象,你繼承的是誰,就是誰,比如父類是動物,狗類集成於動物類,在狗類中super指的是動物類,動物類沒有顯示集成其他類,則super是指object類,因為java中所有的類的父類都是object類
② 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怎麼訪問父類
classBaseClass{//父類
Stringname="father";
publicStringgetName(){
returnthis.name;
}
}
classNewClassextendsBaseClass{//子類
Stringname="son";
publicStringgetName(){
returnsuper.getName()+this.name
}//返回的結果就是「fatherson」
}
//super就是在子類中可以調用父類的方法與屬性
④ java 中super 的用法及意義
super出現在繼承了父類的子類中。
有三種存在方式:
第一種
super.xxx;(xxx為變數名或對象名)
這種方法意義為,獲取父類中的名字為xxx的變數或方法引用。
使用這種方法可以直接訪問父類中的變數或對象,進行修改賦值等操作
第二種
super.xxx();(xxx為方法名)
這種方法意義為,直接訪問並調用父類中的方法。
第三種
super();
這種方法意義為,調用父類的初始化方法,其實就是調用父類中的public xxx()方法;
⑤ Java裡面super關鍵字是在子類對象內部指代其父類對象的引用嗎
是的。
1、super調用基類中的某一個構造函數
2、super引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時如:super.變數名 super.成員函數據名(實參)
⑥ java中的超類是什麼和父類是一個意思嗎
超類=父類=基類?
你硬認為它一樣也沒毛病,但我認為它不一樣.
我先給答案然後解釋.
java的類屬於單性繁殖,和很多語言不同,任何一個類最多隻能有一個父類.
父類:說白了,就是當前類的爸爸.
基類:就是當前類繼承關系中,第一個起始的祖宗,就是爸爸的爸爸的爸爸的爸爸....(就是這個類再沒父類了,單性繁殖不講媽)
超類:當前當前類的繼承關系中這一串的所有祖宗統稱超類.
/////////傳說中的分割線////////
當然,你也可以說我這個概念是胡編亂造的.
那麼請看下面這種情形:
以我認知的編程語言中,降到繼承關系中的,有父類,超類,基類,但是沒有爺類,沒人這么稱呼超類或者基類的吧.
可是有子孫類這一說.
抽象中講到,一個抽象函數必須包含在一個抽象類中.
而抽象類不能實例化.
只有抽象類的所有抽象函數再子孫類中都實現了才可以把抽象類去掉並且以實例化了.
但是又不能說在子類 或者 子類的子類 或者 子類的子類的子類 ... ...
因為這么用太麻煩了.
中文的傳統概念就是子孫有子子孫孫的意思.說重孫子是子孫也沒毛病,好理解.
所以這里用子孫類就對了.
可是再反過來咋說?祖宗類?也沒人這么用.
你只能說抽象函數是定義在超類里的,也不一定是父類,雖然很大可能是基類.
所以,這就是區別了.
⑦ JAVA中super的作用
super可作用是向自己超(父)類對象的一個指針,而這個超類指的是離自己最近的一個父類。
super也有三種用法:
1、普通的直接引用
與this類似,super相當於是指向當前對象的父類,這樣就可以用super.xxx來引用父類的成員。
2、子類中的成員變數或方法與父類中的成員變數或方法同名。
3、引用構造函數
super(參數):調用父類中的某一個構造函數(應該為構造函數中的第一條語句)。
this(參數):調用本類中另一種形式的構造函數(應該為構造函數中的第一條語句)。
(7)superjava父類擴展閱讀
super使用
示例:
class Country {
String name;
void value() {
name = "China";
}
}
class City extends Country {
String name;
void value() {
name = "Shanghai";
super.value(); //調用父類的方法
System.out.println(name);
System.out.println(super.name);
}
public static void main(String[] args) {
City c=new City();
c.value();
}
}
⑧ 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(s)是什麼意思
在java中super表示調用父類(基類)的函數:
如果super()表示調用父類的構造函數,
super.method表示調用父類中的函數(非構造函數)
你這里是調用java.awt.Frame的構造函數。
⑩ java構造函數中可以用super調用父類方法嗎
java構造函數中可以用super調用父類方法,例如以下代碼:
class Father
{
public Father()
{String name=null;
int age=0;}
}
class Son extends Father
{
public Son()
{String name="學生";
super();}
}
//