亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

詳解Java中super的幾種用法并與this的區別

2019-11-26 15:50:52
字體:
來源:轉載
供稿:網友

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

復制代碼 代碼如下:

class Base {

Base() {

System.out.println("Base");

}

}


public class Checket extends Base {

Checket() {

super();//調用父類的構造方法,一定要放在方法的首個語句

System.out.println("Checket");

}

 

public static void main(String argv[]) {

Checket c = new Checket();

}

}


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

 

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

復制代碼 代碼如下:

class Country {

String name;

 

void value() {

name = "China";

}

}

 

class City extends Country {

String name;

 

void value() {

name = "Hefei";

super.value();//不調用此方法時,super.name返回的是父類的成員變量的值null

System.out.println(name);

System.out.println(super.name);

}

 

public static void main(String[] args) {

City c=new City();

c.value();

}

}


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

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

復制代碼 代碼如下:

class Country {

String name="xianfan";

 

String value(String name) {

name = "China";

return name;

}

}

 

class City extends Country {

String name;

 

String value(String name) {

name = "Hefei";

super.value("失敗");//不調用此方法時,super.name返回的是父類的成員變量的值null

System.out.println(name);

System.out.println(super.name);

return name;

}

 

public static void main(String[] args) {

City c=new City();

c.value("成功");

}

}


結果為:Hefei

xianfan

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

 

3.用super直接傳遞參數:

復制代碼 代碼如下:

class Person {

public static void prt(String s) {

System.out.println(s);

}

 

Person() {

prt("A Person.");

}

 

Person(String name) {

prt("A person name is:" + name);

}

}

 

public class Chinese extends Person {

Chinese() {

super(); // 調用父類構造函數(1)

prt("A chinese.");// (4)

}

 

Chinese(String name) {

super(name);// 調用父類具有相同形參的構造函數(2)

prt("his name is:" + name);

}

 

Chinese(String name, int age) {

this(name);// 調用當前具有相同形參的構造函數(3)

prt("his age is:" + age);

}

 

public static void main(String[] args) {

Chinese cn = new Chinese();

cn = new Chinese("kevin");

cn = new Chinese("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”(因為它是父類中的方法且可被子類訪問),它照樣可以正確運行。但這樣似乎就有點畫蛇添足的味道了。

4.super和this的異同:

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

2)this(參數):調用本類中另一種形成的構造函數(應該為構造函數中的第一條語句)
3)super: 它引用當前對象的直接父類中的成員(用來訪問直接父類中被隱藏的父類中成員數據或函數,基類與派生類中有相同成員定義時如:super.變量名    super.成員函數據名(實參)

4)this:它代表當前對象名(在程序中易產生二義性之處,應使用this來指明當前對象;如果函數的形參與類中的成員數據同名,這時需用this來指明成員變量名)

5)調用super()必須寫在子類構造方法的第一行,否則編譯不通過。每個子類構造方法的第一條語句,都是隱含地調用super(),如果父類沒有這種形式的構造函數,那么在編譯的時候就會報錯。

6)super()和this()類似,區別是,super()從子類中調用父類的構造方法,this()在同一類內調用其它方法。

7)super()和this()均需放在構造方法內第一行。

8)盡管可以用this調用一個構造器,但卻不能調用兩個。

9)this和super不能同時出現在一個構造函數里面,因為this必然會調用其它的構造函數,其它的構造函數必然也會有super語句的存在,所以在同一個構造函數里面有相同的語句,就失去了語句的意義,編譯器也不會通過。

10)this()和super()都指的是對象,所以,均不可以在static環境中使用。包括:static變量,static方法,static語句塊。

11)從本質上講,this是一個指向本對象的指針, 然而super是一個Java關鍵字。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
韩国精品久久久999| 欧美日韩国产二区| 中文字幕精品在线视频| 亚洲网站视频福利| 国产91精品网站| 成人做爰www免费看视频网站| 亚洲a成v人在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 成人网页在线免费观看| 久久97久久97精品免视看| 日韩欧美亚洲范冰冰与中字| 亚洲精品videossex少妇| 亚洲欧美中文字幕| 久久伊人精品视频| 最近更新的2019中文字幕| 97精品国产97久久久久久春色| 欧美高清视频一区二区| 九九热r在线视频精品| 欧美成人精品三级在线观看| 亚洲欧美国产视频| 国产精品黄页免费高清在线观看| 久久九九全国免费精品观看| 亚洲精品乱码久久久久久按摩观| 亚洲韩国欧洲国产日产av| 中文字幕精品在线视频| 2019中文字幕在线| 日本精品中文字幕| 中文字幕av日韩| 国产一区二区在线免费| 欧美一区二区三区精品电影| 日韩精品视频免费在线观看| 国内精品一区二区三区四区| 亚洲自拍偷拍在线| 国产97在线|日韩| 日韩在线视频线视频免费网站| 亚洲美女又黄又爽在线观看| 久久国产精品久久久久久| 国产一区二区三区在线观看视频| 在线观看免费高清视频97| 欧美精品电影免费在线观看| 91日本在线视频| 亚洲二区在线播放视频| 欧美国产在线电影| 91精品国产成人| 国产精品久久久久国产a级| 欧美精品久久久久久久| 国产精品九九久久久久久久| 亚洲国产一区自拍| 一区二区欧美在线| 国产欧美日韩免费| 最近更新的2019中文字幕| 亚洲国产精品人人爽夜夜爽| 1769国内精品视频在线播放| 久久免费在线观看| 中文字幕欧美日韩在线| 国产亚洲美女久久| 一区二区三区天堂av| 美女视频黄免费的亚洲男人天堂| 国产91精品久久久久久| 日韩中文字在线| 成人免费大片黄在线播放| 黄色成人在线免费| 高潮白浆女日韩av免费看| 亚洲欧美国产精品专区久久| 亚洲日本中文字幕| 免费av一区二区| 日韩a**中文字幕| 欧美老女人www| 日韩精品免费一线在线观看| 亚洲精品国产综合区久久久久久久| 日本免费久久高清视频| 久久亚洲影音av资源网| 久久亚洲精品一区| 操91在线视频| 欧美高清在线观看| 亚洲国产精品视频在线观看| 亚洲国产成人精品女人久久久| 国产色婷婷国产综合在线理论片a| 亚洲第一天堂无码专区| 日韩免费在线观看视频| 日韩av在线免费观看一区| 国产在线不卡精品| 久久久久久久久91| 高清欧美性猛交| 国产69精品99久久久久久宅男| 久久综合电影一区| 国产精品视频26uuu| 中国日韩欧美久久久久久久久| 国产精品成久久久久三级| 亚洲区中文字幕| 一区二区三区日韩在线| 午夜精品久久17c| 欧美人与性动交a欧美精品| 正在播放亚洲1区| 久久精品小视频| 中文字幕亚洲二区| 91成人在线播放| 日韩有码在线电影| 日韩一区二区三区在线播放| 精品高清美女精品国产区| 欧美精品免费看| 亚洲欧美一区二区三区在线| 亚洲高清免费观看高清完整版| 亚洲欧美日韩中文视频| 久久精品99国产精品酒店日本| 国产热re99久久6国产精品| 中文字幕亚洲二区| 奇米4444一区二区三区| 精品国产一区av| 国产亚洲在线播放| 色诱女教师一区二区三区| 亚洲人成电影网站色www| 欧美成人全部免费| 久久免费高清视频| 北条麻妃一区二区在线观看| 久久噜噜噜精品国产亚洲综合| 国产一区二区欧美日韩| 欧美日韩亚洲一区二区三区| 欧美二区在线播放| 欧美巨乳美女视频| 国产精品网址在线| 黄色精品在线看| 尤物yw午夜国产精品视频| 精品视频在线播放| 91国内精品久久| 久99九色视频在线观看| 欧美美女15p| 夜夜狂射影院欧美极品| 国产视频精品一区二区三区| 欧美日韩免费在线观看| 狠狠躁夜夜躁久久躁别揉| 97视频网站入口| 成人网中文字幕| 亚洲石原莉奈一区二区在线观看| 欧美第一页在线| 欧美国产亚洲视频| 丝袜亚洲欧美日韩综合| 国产91精品青草社区| 久久久久久91香蕉国产| 欧美视频在线免费看| 97精品一区二区三区| 国产999视频| 亚洲人午夜色婷婷| 在线视频日本亚洲性| 国产精品久久久久久久午夜| 91日本视频在线| 色婷婷综合久久久久| 日韩理论片久久| 亚洲欧美福利视频| 亚洲免费av片| 日韩av在线免费看| 成人在线精品视频| 精品久久久久久电影| 69av成年福利视频| 97国产精品视频| 午夜精品一区二区三区在线播放| 日韩精品欧美激情| 亚洲字幕在线观看| 日韩精品在线电影| 国产精品爽黄69| 亚洲国产三级网| 国产精品成人免费视频| 亚洲风情亚aⅴ在线发布| 中文字幕一区二区三区电影|