大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java教程
Java標識符與關鍵字
Java變量
Java數(shù)據(jù)類型
Java運算符
Java控制語句
Java方法
Java面向對象
Java對象的創(chuàng)建和使用
Java封裝
Java中static和this
Java繼承
Java方法覆蓋和多態(tài)
Java super
Java基礎練習題

Java中super關鍵字的使用(在實例方法中)

super和this都可以使用在實例方法中,并且都不能使用在靜態(tài)方法當中,“this”大部分情況下都是可以省略的,只有在方法中區(qū)分局部變量和實例變量的時候不能省略。那“super”什么時候可以省略,什么時候不能省略呢?

//書
public class Book {
	//書名
	String name;
	//構造方法
	public Book(){
		super();
	}
	public Book(String name){
		super();
		this.name = name;
	}
}
//紙質書
public class PaperBook extends Book {
	//構造方法
	public PaperBook(){
		super();
	}
	public PaperBook(String name){
		super();
		this.name = name;
	}
	//打印書名
	public void printName(){
		System.out.println("this.name->書名 : " + this.name);
		System.out.println("super.name->書名 : " + super.name);
	}
}
public class BookTest {
	public static void main(String[] args) {
		PaperBook book1 = new PaperBook("零基礎學Java卷I");
		book1.printName();
	}
}
運行結果如下圖所示:

Java應用

圖14-11:super和this

我們發(fā)現(xiàn)printName()方法中的super.name和this.name最終輸出結果是一樣的,這是為什么呢?請看以上程序執(zhí)行的內存圖:

Java編程

圖14-12:父類的構造方法執(zhí)行結束之后的內存圖

Java開發(fā)

圖14-13:子類的構造方法執(zhí)行結束之后的內存圖

通過以上內存結構圖發(fā)現(xiàn)this.name和super.name實際上是同一塊內存空間,所以它們的輸出結果是完全一樣的。接下來,我們再把以上的PaperBook類修改一下:

//紙質書
public class PaperBook extends Book {
	String name; //在子類中也定義了一個name屬性
	//構造方法
	public PaperBook(){
		super();
	}
	public PaperBook(String name){
		super();
		this.name = name;//這里的this.name代表子類的name
	}
	//打印書名
	public void printName(){
		System.out.println("this.name->書名 : " + this.name);
		System.out.println("super.name->書名 : " + super.name);
	}
}
運行結果如下圖所示:

圖14-14:super和this的區(qū)別

為什么super.name是null呢,我們一起來看看以上程序的內存圖:

Java技術架構

圖14-15:父類Book的構造方法執(zhí)行之后的內存圖

Java應用

圖14-16:子類PaperBook的構造方法執(zhí)行結束之后的內存圖

通過以上內存圖可以清楚的看到,父類Book的構造方法在執(zhí)行的時候給super.name賦值null,子類PaperBook的構造方法在執(zhí)行的時候給this.name賦值“零基礎學Java卷I”,由于在子類PaperBook中定義了重名的變量name導致在當前對象中有兩個name,一個是從父類中繼承過來的,一個是自己的,如果此時想訪問父類中繼承過來的name則必須使用super.name,當直接訪問name或者this.name都表示訪問當前對象自己的name。

通過以上的學習,大家知道super在什么情況下不能省略了嗎?當父類中有該實例變量,子類中又重新定義了同名的實例變量,如果想在子類中訪問父類的實例變量,super不能省略。實例方法是這樣嗎?我們可以來測試一下,請看代碼:

public class Vip {
	//Vip默認繼承Object
	//重寫從Object類中繼承過來的toString()方法
	public String toString(){
		return "我是金牌會員";
	}
	public void test(){
		System.out.println(super.toString());
		System.out.println(this.toString());
		System.out.println(toString());
	}
}
public class VipTest {
	public static void main(String[] args) {
		Vip vip = new Vip();
		vip.test();
	}
}
運行結果如下圖所示:

Java技術架構

圖14-17:運行結果

通過以上測試得出最終結論:父類和子類中有同名實例變量或者有同名的實例方法,想在子類中訪問父類中的實例變量或實例方法,則super是不能省略的,其它情況都可以省略。 

全部教程
主站蜘蛛池模板: 亚洲国产精品aa在线看 | 在线亚洲 欧美 日本专区 | 国产成人一区二区三中文 | 亚洲精品一区henhen色 | 久久综合九色综合网站 | 57pao一国产成视频永久免费 | 久久综合久久综合久久综合 | 四虎影视永久地址www成人 | 国产色产综合色产在线观看视频 | 999国产精品视频 | 日本一区二区三区高清在线观看 | 精品国产一区二区三区www | 成人国内精品久久久久影 | 377p亚洲欧洲日本大胆色噜噜 | 免费鲁丝片一级观看 | 超级97碰碰碰碰久久久久最新 | 亚洲精品成人在线 | 久久精品成人国产午夜 | 日本性网址 | 中文字幕色婷婷在线视频 | 国产精品图片 | 国产免费不卡视频 | 99精品国产福利在线观看 | 亚洲欧美日韩中字综合 | 美女被草视频 | 天天操天天擦 | 免费的涩涩视频在线播放 | 国产精品国产亚洲精品看不卡 | 国产免费不卡视频 | 女人18一级特级毛片免费看 | 女人精69xxxxx免费无毒 | 日韩欧美精品中文字幕 | 4hu四虎最新免费地址 | 精品免费久久久久久久 | 久久精品免费视频观看 | 亚洲国产成人久久一区www妖精 | 国产成人一区二区在线不卡 | 国产精自产拍久久久久久 | 免费又爽又黄禁片视频在线播放 | 伊人网五月天 | 日本欧美在线视频 |