當前位置:首頁 » 編程語言 » javasuper

javasuper

發布時間: 2022-09-26 20:50:22

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就是子類調用父類的方法屬性時候用的

比如一個子類B想想寫父類A的方法,但是它只想改一點東西就好了,也就是說它還需要用到父類的方法

(舉個例子父類的方法是吃蘋果,子類想重寫方法為吃蘋果+吃香蕉,那麼我們只要先調用父類的吃蘋果方法,然後再加自己的吃香蕉邏輯就可以了,這樣的好處就是不需要重新在方法里設計自己的方法了,一句話,)

super一般還在子類的構造方法中使用,因為子類的構造必須先要引出父類的構造(沒老爸,哪來的你),而且super必須寫在構造方法中第一行,這是規定

Ⅲ JAVA中的super代表什麼意思

super();表示調用父類的構造方法,只是調用方法,不構造對象。 super.fun();表示調用父類的某方法 在繼承的時候這個方法是肯定被繼承下來的。如果fun()這個方法在子類沒有重寫,那麼super.fun();實際上跟直接調用fun();是一樣的。 如果被重寫了,那麼super.fun();就是重寫前的,fun();就是重寫後的。

Ⅳ java中「super」的用法及意義是

java中的super指的就是父類(super class)
例:B繼承A
A類
class A {
private String astr;
private String bstr;
public A(string astr, string bstr) {
this.astr = astr; //this指的是本類,在這里就是A
this.bstr = bstr;
}

public String getAstr() {
return this.astr;
}

public String getBstr() {
return this.bstr;
}
}

B類
class B extends A {
private String aa;
private String bb;

public B(String aa, String bb) {
super(aa, bb); //這里就調用了父類的構造方法,給父類的super.astr,super.bstr(super.astr也就是父類的astr變數,super.bstr同理)兩個變數賦值了,而不是給this.aa,this.bb(this.aa可以理解為本類的aa變數,this.bb同理)賦值
// this.aa = aa;
// this.bb = bb;
}

puplic String getAA() {
return this.aa;
}

public String getBB() {
return this.bb;
}
}

測試類
public class Test {
public static void main(String[] args) {
B b = new B("aabb", "ccdd"); // 調用B的構造方法,給super.astr,super.bstr賦值了
System.out.println(b.getAa()); // null 沒有被賦值
System.out.println(b.getBb()); // null
System.out.println(b.getAstr()); // aabb 調用父類的方法,返回super.astr的值
System.out.println(b.getAstr()); // ccdd 調用父類的方法,返回super.bstr的值
}
}

Ⅳ java中Super是什麼意思

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。

super是引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時如:super.變數名 super.成員函數據名。

Ⅵ 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代表什麼意思

構造器和方法,都用關鍵字super指向超類,但是用的方法不一樣。
方法用這個關鍵字去執行被重載的超類中的方法。
看下面的例子:
class
Mammal
{
void
getBirthInfo()
{
System.out.println("born
alive.");
}
}
class
Platypus
extends
Mammal
{
void
getBirthInfo()
{
System.out.println("hatch
from
eggs");
System.out.print("a
mammal
normally
is
");
super.getBirthInfo();
}
}
在上面的例子中,使用super.getBirthInfo()去調用超類Mammal中被重載的方法。
構造器使用super去調用超類中的構造器。而且這行代碼必須放在第一行,否則編譯將出錯。看下面的例子:
public
class
SuperClassDemo
{
SuperClassDemo()
{}
}
class
Child
extends
SuperClassDemo
{
Child()
{
super();
}
}
在上面這個沒有什麽實際意義的例子中,構造器
Child()包含了
super,它的作用就是將超類中的構造器SuperClassDemo實例化,幷加到
Child類中。
回答完畢,不知道你明白了沒有

Ⅷ JAVA 中super 和this 的區別

區別如下:

1、指代上的區別

(1)super:是對當前對象中父對象的引用。

(2)This:指當前對象的參考。

2、引用對象上的區別

(1)super:直接父類中引用當前對象的成員(當基本成員和派生類具有相同成員時,用於訪問直接父類中隱藏父類中的成員數據或函數定義)。

(2)This:表示當前對象的名稱(程序中容易出現歧義的地方,應該用來表示當前對象;如果函數的成員數據與該類中成員數據的名稱相同,應用於表示成員變數名稱)。

3、調用函數上的區別

(1)super:在基類中調用構造函數(是構造函數中的第一條語句)。

(2)This:在此類中調用另一個結構化的構造函數(是構造函數中的第一條語句)。

Ⅸ JAVA中super的作用

super可作用是向自己超(父)類對象的一個指針,而這個超類指的是離自己最近的一個父類。

super也有三種用法:

1、普通的直接引用

與this類似,super相當於是指向當前對象的父類,這樣就可以用super.xxx來引用父類的成員。

2、子類中的成員變數或方法與父類中的成員變數或方法同名。

3、引用構造函數

super(參數):調用父類中的某一個構造函數(應該為構造函數中的第一條語句)。

this(參數):調用本類中另一種形式的構造函數(應該為構造函數中的第一條語句)。

(9)javasuper擴展閱讀

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();

}

}

熱點內容
無線列印伺服器搭建 發布:2024-12-27 13:50:50 瀏覽:287
arm的存儲器 發布:2024-12-27 13:47:24 瀏覽:979
vivox20忘記密碼怎麼解鎖 發布:2024-12-27 13:46:00 瀏覽:814
sqlserver默認排序 發布:2024-12-27 13:45:50 瀏覽:974
安卓東西怎麼往蘋果上傳 發布:2024-12-27 13:27:36 瀏覽:129
圖片壓縮的app 發布:2024-12-27 13:25:35 瀏覽:106
設置對象存儲 發布:2024-12-27 13:25:24 瀏覽:707
現在玩lol要什麼配置 發布:2024-12-27 13:17:30 瀏覽:224
vs2012添加文件夾 發布:2024-12-27 13:01:27 瀏覽:899
c語言統計單詞數 發布:2024-12-27 12:58:09 瀏覽:57