六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Java基礎(chǔ):理解構(gòu)造器 (轉(zhuǎn))

[摘要]Java入門:理解構(gòu)造器 譯者:東方一蛇理解構(gòu)造器--構(gòu)造器和方法的區(qū)別摘要要學(xué)習(xí)Java,你必須理解構(gòu)造器。因?yàn)闃?gòu)造器可以提供許多特殊的方法,這個(gè)對(duì)于初學(xué)者經(jīng)常混淆。但是,構(gòu)造器和方法又有很多重要...
Java入門:理解構(gòu)造器
譯者:東方一蛇

理解構(gòu)造器--構(gòu)造器和方法的區(qū)別

摘要

要學(xué)習(xí)Java,你必須理解構(gòu)造器。因?yàn)闃?gòu)造器可以提供許多特殊的方法,這個(gè)對(duì)于初學(xué)者經(jīng)常混淆。但是,構(gòu)造器和方法又有很多重要的區(qū)別。

原作者:Robert Nielsen 原站:www.javaworld.com



我們說(shuō)構(gòu)造器是一種方法,就象講澳大利亞的鴨嘴獸是一種哺育動(dòng)物。(按:老外喜歡打比喻,我也就照著翻譯)。要理解鴨嘴獸,那么先必須理解它和其他哺育動(dòng)物的區(qū)別。同樣地,要理解構(gòu)造器,那么就要了解構(gòu)造器和方法的區(qū)別。所有學(xué)習(xí)java的人,尤其是對(duì)那些要認(rèn)證考試的,理解構(gòu)造器是非常重要的。下面將簡(jiǎn)單介紹一下 ,最后用一個(gè)表作了些簡(jiǎn)單的總結(jié)。


功能和作用的不同

構(gòu)造器是為了創(chuàng)建一個(gè)類的實(shí)例。這個(gè)過(guò)程也可以在創(chuàng)建一個(gè)對(duì)象的時(shí)候用到:Platypus p1 = new Platypus();



相反,方法的作用是為了執(zhí)行java代碼。


修飾符,返回值和命名的不同

構(gòu)造器和方法在下面三個(gè)方便的區(qū)別:修飾符,返回值,命名。和方法一樣,構(gòu)造器可以有任何訪問(wèn)的修飾: public, protected, private或者沒(méi)有修飾(通常被package 和 friendly調(diào)用). 不同于方法的是,構(gòu)造器不能有以下非訪問(wèn)性質(zhì)的修飾: abstract, final, native, static, 或者 synchronized。


返回類型也是非常重要的。方法能返回任何類型的值或者無(wú)返回值(void),構(gòu)造器沒(méi)有返回值,也不需要void。


最后,談?wù)剝烧叩拿?gòu)造器使用和類相同的名字,而方法則不同。按照習(xí)慣,方法通常用小寫字母開(kāi)始,而構(gòu)造器通常用大寫字母開(kāi)始。構(gòu)造器通常是一個(gè)名詞,因?yàn)樗皖惷嗤欢椒ㄍǔ8咏鼊?dòng)詞,因?yàn)樗f(shuō)明一個(gè)操作。


"this"的用法

構(gòu)造器和方法使用關(guān)鍵字this有很大的區(qū)別。方法引用this指向正在執(zhí)行方法的類的實(shí)例。靜態(tài)方法不能使用this關(guān)鍵字,因?yàn)殪o態(tài)方法不屬于類的實(shí)例,所以this也就沒(méi)有什么東西去指向。構(gòu)造器的this指向同一個(gè)類中,不同參數(shù)列表的另外一個(gè)構(gòu)造器,我們看看下面的代碼:


public class Platypus {


String name;


Platypus(String input) {

name = input;

}


Platypus() {

this("John/Mary Doe");

}


public static void main(String args[]) {

Platypus p1 = new Platypus("digger");

Platypus p2 = new Platypus();

}

}



在上面的代碼中,有2個(gè)不同參數(shù)列表的構(gòu)造器。第一個(gè)構(gòu)造器,給類的成員name賦值,第二個(gè)構(gòu)造器,調(diào)用第一個(gè)構(gòu)造器,給成員變量name一個(gè)初始值 "John/Mary Doe".

在構(gòu)造器中,如果要使用關(guān)鍵字this,那么,必須放在第一行,如果不這樣,將導(dǎo)致一個(gè)編譯錯(cuò)誤。


 
"super"的用法

構(gòu)造器和方法,都用關(guān)鍵字super指向超類,但是用的方法不一樣。方法用這個(gè)關(guān)鍵字去執(zhí)行被重載的超類中的方法。看下面的例子:


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()去調(diào)用超類Mammal中被重載的方法。


構(gòu)造器使用super去調(diào)用超類中的構(gòu)造器。而且這行代碼必須放在第一行,否則編譯將出錯(cuò)。看下面的例子:


public class SuperClassDemo {

SuperClassDemo() {}

}


class Child extends SuperClassDemo {

Child() {

super();

}

}



在上面這個(gè)沒(méi)有什么實(shí)際意義的例子中,構(gòu)造器 Child()包含了 super,它的作用就是將超類中的構(gòu)造器SuperClassDemo實(shí)例化,并加到 Child類中。


編譯器自動(dòng)加入代碼

編譯器自動(dòng)加入代碼到構(gòu)造器,對(duì)于這個(gè),java程序員新手可能比較混淆。當(dāng)我們寫一個(gè)沒(méi)有構(gòu)造器的類,編譯的時(shí)候,編譯器會(huì)自動(dòng)加上一個(gè)不帶參數(shù)的構(gòu)造器,例如:public class Example {}

編譯后將如下代碼:


public class Example {

Example() {}

}



在構(gòu)造器的第一行,沒(méi)有使用super,那么編譯器也會(huì)自動(dòng)加上,例如:


public class TestConstructors {

TestConstructors() {}

}



編譯器會(huì)加上代碼,如下:


public class TestConstructors {

TestConstructors() {

super;

}

}



仔細(xì)想一下,就知道下面的代碼


public class Example {}



經(jīng)過(guò)會(huì)被編譯器加代碼形如:


public class Example {

Example() {

super;

}

}










繼承








構(gòu)造器是不能被繼承的。子類可以繼承超類的任何方法。看看下面的代碼:





public class Example {


public void sayHi {


system.out.println("Hi");


}





Example() {}


}





public class SubClass extends Example {


}








類 SubClass 自動(dòng)繼承了父類中的sayHi方法,但是,父類中的構(gòu)造器 Example()卻不能被繼承。





總結(jié)





主題

構(gòu)造器

方法




功能

建立一個(gè)類的實(shí)例

java功能語(yǔ)句




修飾

不能用bstract, final, native, static,
or synchronized






返回類型

沒(méi)有返回值,沒(méi)有void

有返回值,或者void




命名

和類名相同;通常為名詞,大寫開(kāi)頭

通常代表一個(gè)動(dòng)詞的意思,小寫開(kāi)頭




this

指向同一個(gè)類中另外一個(gè)構(gòu)造器,在第一行

指向當(dāng)前類的一個(gè)實(shí)例,不能用于靜態(tài)方法




super

調(diào)用父類的構(gòu)造器,在第一行

調(diào)用父類中一個(gè)重載的方法




繼承

構(gòu)造器不能被繼承

方法可以被繼承




編譯器自動(dòng)加入一個(gè)缺省的構(gòu)造器

自動(dòng)加入(如果沒(méi)有)

不支持




編譯器自動(dòng)加入一個(gè)缺省的調(diào)用到超類的構(gòu)造器

自動(dòng)加入(如果沒(méi)有)

不支持


主站蜘蛛池模板: 中文字幕第15页 | 天天色姑娘 | 中文字幕伦伦精品 | 中文字幕国产专区 | 日本一本二本在线观看 | 一二三四影院网在线观看免费 | 日日操日日爽 | 天天操天天插天天射 | 亚洲黄色成人 | 天天摸夜夜添久久精品麻豆 | 亚洲综合色站 | 日韩一区二三区无 | 色婷婷影院 | 日日天天干| 日韩精品免费在线观看 | 五月婷丁香 | 中文在线免费看视频 | 伊人成影院 | 性综合网 | 特a级黄色片 | 日本视频三区 | 日本一区二区三区欧美在线观看 | 水蜜桃一区一区三全集 | 天天干天天色综合 | 亚洲韩国日本欧美一区二区三区 | 又硬又粗又长又爽免费看 | 日本欧美久久久久免费播放网 | 青青色在线视频 | 外国毛片视频 | 天天干夜夜骑 | 宇都宫紫苑日韩专区亚洲 | 亚洲福利精品一区二区三区 | 手机看片自拍自拍 | 青草视频在线看 | 天天干天天在线 | 伊人久久大香线蕉avapp下载 | 日本成人小视频 | 亚洲欧美一区二区三区在线观看 | 亚洲精品在线视频观看 | 新婚被黑人睡走中文字幕 | 欧美在线观看一区 |