JAVA語(yǔ)言的特點(diǎn)2.面向?qū)ο?/p>
Java語(yǔ)言最吸引人之處,就在于它是一種以對(duì)象為中心,一消息為驅(qū)動(dòng)的面向?qū)ο蟮木幊陶Z(yǔ)言,面向?qū)ο蟮恼Z(yǔ)言都支持三個(gè)概念:封裝、繼承和多態(tài),Java語(yǔ)言也是如此。
1)封裝
所謂封裝,就是指利用抽象數(shù)據(jù)類(lèi)型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類(lèi)型的內(nèi)部,系統(tǒng)和其他部分只用通過(guò)封裝在數(shù)據(jù)外面的被授權(quán)的操作,才能夠與這個(gè)抽象數(shù)據(jù)類(lèi)型交互。
2)繼承
繼承是指一個(gè)對(duì)象直接使用另一個(gè)對(duì)象的屬性和方法。Java語(yǔ)言給用戶(hù)提供了一系列的類(lèi),并且Java語(yǔ)言的類(lèi)很有層次結(jié)構(gòu),子類(lèi)可以繼承父類(lèi)的屬性和方法。Java語(yǔ)言只支持單一繼承,這樣就大大降低了復(fù)雜度,但在Java語(yǔ)言中,可以通過(guò)接口來(lái)實(shí)現(xiàn)多重繼承。
3多態(tài)
多態(tài)是指一個(gè)程序中同名的多個(gè)不同方法共存的情況,即一個(gè)對(duì)外接口,多個(gè)內(nèi)在實(shí)現(xiàn)方法,面向?qū)ο蟪绦蛑卸鄳B(tài)的情況有多種,可以通過(guò)子類(lèi)對(duì)父類(lèi)方法的覆蓋實(shí)現(xiàn)多態(tài),也可以利用重載在同一個(gè)類(lèi)中定義多個(gè)同名的不同方法來(lái)實(shí)現(xiàn)多態(tài)。多態(tài)的特點(diǎn)使得它們不需了解對(duì)方的具體細(xì)節(jié),就可以很好地共同工作。這個(gè)優(yōu)點(diǎn),對(duì)程序的設(shè)計(jì)、開(kāi)發(fā)和維護(hù)都有很大的好處。
特點(diǎn)9:編譯與解釋并存
用Java語(yǔ)言編寫(xiě)的程序稱(chēng)為源文件(擴(kuò)展名為.java的文件),源文件是不能被計(jì)算機(jī)執(zhí)行的。要想使程序得以運(yùn)行,必須編譯器(不同的計(jì)算機(jī)語(yǔ)言有不同的編譯器)對(duì)源文件進(jìn)行編譯,編譯器將源文件編輯(即翻譯)成計(jì)算機(jī)能懂的語(yǔ)言。Java提供的編譯器并不是把源文件編譯成二進(jìn)制碼,而是將其 編譯成一種獨(dú)立與機(jī)器平臺(tái)的中間代碼,這種中間代碼被稱(chēng)為字節(jié)碼(即擴(kuò)展名為.class的文件)。字節(jié)碼可以被Java解釋器所執(zhí)行,由解釋器將字節(jié)碼再編譯成二進(jìn)制碼,使程序得以運(yùn)行。字節(jié)碼非常類(lèi)似于機(jī)器指令,但字節(jié)碼與具體機(jī)器是無(wú)關(guān)的,并不能在具體的平臺(tái)上執(zhí)行,而要通過(guò)Java運(yùn)行系統(tǒng)中的解釋器來(lái)解釋執(zhí)行,也就是說(shuō),Java程序的運(yùn)行要經(jīng)過(guò)兩個(gè)步驟來(lái)完成:
首先是由編譯器將Java源程序編譯成字節(jié)碼文件,然后再由Java運(yùn)行系統(tǒng)解釋執(zhí)行字節(jié)碼文件,這就是所謂的編譯與解釋并存。當(dāng)然從本質(zhì)上說(shuō),Java語(yǔ)言屬于解釋型的高級(jí)程序設(shè)計(jì)語(yǔ)言,但Java語(yǔ)言通過(guò)字節(jié)碼的方式,又在一定程度上解決了傳統(tǒng)解釋型語(yǔ)言執(zhí)行效率低的問(wèn)題,同時(shí)又保留了解釋型語(yǔ)言可移植的特點(diǎn)。所以Java程序運(yùn)行時(shí)比較高效。而且,由于字節(jié)碼并不專(zhuān)對(duì)一種特定的機(jī)器,因此,Java程序無(wú)須重新編譯便可在多種不同的計(jì)算機(jī)上運(yùn)行。
Java虛擬機(jī)(JVM其實(shí)就是一個(gè)字節(jié)碼解釋器)
字節(jié)碼最大的好處是可跨平臺(tái)運(yùn)行,即Java的字節(jié)碼可以編寫(xiě)一次,到處運(yùn)行。用戶(hù)使用任何一種Java編譯器件Java 源程序(.java)編譯成字節(jié)碼文件(.class)后無(wú)論使用哪種操作系統(tǒng),都可以在含有JVM的平臺(tái)上運(yùn)行。這種跨平臺(tái)的特性,也是讓Java語(yǔ)言極速普及的原因之一。
Java程序種類(lèi)和結(jié)構(gòu)
可以編寫(xiě)兩種類(lèi)型的程序:Application(應(yīng)用程序)和Applet(小程序)
開(kāi)發(fā)原理相同,但在運(yùn)行環(huán)境和計(jì)算結(jié)構(gòu)顯著不同
Application:是從命令行運(yùn)行的程序,他可以在Java平臺(tái)上獨(dú)立運(yùn)行,通常稱(chēng)之為Java應(yīng)用程序。Java應(yīng)用程序是獨(dú)立完整的程序,在命令行調(diào)用獨(dú)立的解釋器軟件即可運(yùn)行。另外,Java應(yīng)用程序的主類(lèi)必須包含有一個(gè)定義為public static void main(String【】args)的主方法,這個(gè)方法是Java應(yīng)用程序的標(biāo)志,同時(shí)也是Java應(yīng)用程序執(zhí)行的入口點(diǎn),也就是說(shuō)在應(yīng)用程序中包含有main()方法的類(lèi)一定是主類(lèi),但主類(lèi)不一定要求是public類(lèi)。
小程序是嵌入在HTML(超文本標(biāo)記語(yǔ)言)文檔中的Java程序,需要搭配瀏覽器來(lái)運(yùn)行,因此成為小程序。與此可見(jiàn),當(dāng)運(yùn)行一個(gè)Java小程序時(shí)就,同時(shí)還要為它編寫(xiě)一個(gè)HTML文件,然后在www瀏覽器中運(yùn)行這個(gè)文件,就可以激活瀏覽器中的Java解釋器。另外,也可以調(diào)用一些能夠模擬瀏覽器環(huán)境并執(zhí)行Java小程序的軟件來(lái)直接運(yùn)行Java小程序。由于瀏覽器手安全控制的限制,所以Java小程序一般使用模擬瀏覽器環(huán)境的軟件來(lái)執(zhí)行。
Java小程序與Java應(yīng)用程序之間的不同:
首先,小程序和應(yīng)用程序之間的技術(shù)差別在于運(yùn)行環(huán)境。Java應(yīng)用程序運(yùn)行在最簡(jiǎn)單的環(huán)境中,他唯一外部輸入就是命令行參數(shù);而小程序則需要來(lái)自webl瀏覽器的大量信息,它內(nèi)嵌在HTML文件里,在WWW瀏覽器這個(gè)特定環(huán)境下運(yùn)行的,他需要知道何時(shí)啟動(dòng),何時(shí)放入瀏覽器窗口,在何處、何時(shí)激活、關(guān)閉等。
其次,由于小程序和應(yīng)用程序的執(zhí)行環(huán)境不同,他們的最低要求也不同。在應(yīng)用方面,www使小程序的發(fā)布非常便利,因此小程序更適合在Internet上的使用;相反,非網(wǎng)絡(luò)系統(tǒng)和內(nèi)存較小的系統(tǒng)更適合使用Java應(yīng)用程序。
無(wú)論是應(yīng)用程序還是小程序都必須要有一個(gè)主類(lèi),主類(lèi)是程序執(zhí)行的起始點(diǎn),應(yīng)用程序的主類(lèi)是包含有main()方法的類(lèi),但應(yīng)用程序的主類(lèi)并不一定要求是public類(lèi);小程序的主類(lèi)必須是繼承自系統(tǒng)類(lèi)JApplet或Applet的子類(lèi),該類(lèi)必須是public類(lèi)。
例題:一個(gè)一般的Java應(yīng)用程序
(朱文杰拉我去吃飯,下午補(bǔ)上)