亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        關(guān)于Java繼承性的探討

        2011-02-08 13:02:18李斌王睿
        關(guān)鍵詞:程序

        李斌,王睿

        (揚(yáng)州市職業(yè)大學(xué)信息工程學(xué)院,江蘇揚(yáng)州225002)

        在經(jīng)歷了以大型機(jī)為代表的集中計(jì)算模式和以PC機(jī)為代表的分散計(jì)算模式之后,互聯(lián)網(wǎng)的出現(xiàn)使得計(jì)算模式進(jìn)入了網(wǎng)絡(luò)計(jì)算時(shí)代。網(wǎng)絡(luò)計(jì)算模式的一個(gè)特點(diǎn)是計(jì)算機(jī)是異構(gòu)的,即計(jì)算機(jī)的類型和操作系統(tǒng)是不一樣的,例如SUN工作站的硬件是SPARC體系,軟件是Unix中的Solaris操作系統(tǒng),而PC機(jī)的硬件是Intel體系,操作系統(tǒng)是windows或者是Linux。網(wǎng)絡(luò)計(jì)算模式的另一個(gè)特點(diǎn)是代碼可以通過網(wǎng)絡(luò)在各種計(jì)算機(jī)上進(jìn)行遷移,這就迫切需要一種跨平臺(tái)的編程語(yǔ)言,使得用它編寫的程序能夠在網(wǎng)絡(luò)中的各種計(jì)算機(jī)上能夠正常運(yùn)行,Java就是在這種需求下應(yīng)運(yùn)而生的。Java語(yǔ)言具有簡(jiǎn)單、面向?qū)ο?、健壯、安全、可靠、平臺(tái)無(wú)關(guān)性、解釋執(zhí)行、多線程、高性能、易學(xué)、適用于網(wǎng)絡(luò)等顯著特點(diǎn),已成為當(dāng)今最流行的網(wǎng)絡(luò)編程語(yǔ)言之一。

        Java的所有程序都具有封裝性、繼承性和多態(tài)性。封裝性就是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的相同單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié);繼承是軟件重用的一種形式,也是自動(dòng)地實(shí)現(xiàn)方法和數(shù)據(jù)共享的機(jī)制;多態(tài)性是指在父類中定義的屬性或服務(wù)被子類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。本文僅就Java的繼承性進(jìn)行一定的探討。

        1 Java的繼承

        繼承是一種由已有類創(chuàng)建新類的機(jī)制。繼承也是面向?qū)ο笳Z(yǔ)言的基本要素之一,它是源自類的泛化機(jī)制,這種抽象機(jī)制提供了一種無(wú)限重復(fù)利用程序資源的途徑,繼承可以擴(kuò)展原有的代碼,應(yīng)用到其他程序中,而不必重新編寫這些代碼,這樣不僅節(jié)省程序開發(fā)時(shí)間,而且為未來程序設(shè)計(jì)增添了新的資源。對(duì)象通過繼承,保證了實(shí)現(xiàn)部分緊內(nèi)聚和松耦合的良好特性。

        利用繼承,我們可以先創(chuàng)建一個(gè)共有屬性的一般類,根據(jù)該類再創(chuàng)建具有特殊屬性的新類。在Java語(yǔ)言中,通常我們稱被繼承的一般類為父類(superclass,也叫超類),由繼承而得到的特殊類稱為子類 (subclass)。我們也可以說子類是由父類派生出的類。

        Java的繼承原則如下:

        1)子類繼承父類的成員變量,包括實(shí)例成員變量和類成員變量;

        2) 子類繼承父類除構(gòu)造方法以外的成員方法,包括實(shí)例成員方法和類成員方法;

        3)子類不能繼承父類的構(gòu)造方法,因?yàn)楦割悩?gòu)造方法創(chuàng)建的是父類對(duì)象,子類必須聲明自己的構(gòu)造方法,創(chuàng)建子類自己的對(duì)象;

        4)子類不能刪除父類成員;

        5)子類可以增加自己的成員變量和成員方法;

        6)子類可以重定義父類成員。

        在這段代碼中,子類 SubA繼承了父類SuperA,那么子類自然就擁有了父類的變量a,同時(shí)子類自己又添加了自己新的成員變量b以擴(kuò)充自己的功能。在子類SubA中還可以更改父類SuperA的變量a,讓其適應(yīng)自己的需求,比如,我們?cè)赟ubA中增加一行代碼:int a=3;,這樣在子類SubA中的變量a實(shí)際上隱藏了父類SuperA的變量a。但是,如果試圖在子類SubA中刪除父類SuperA的變量a,這是Java所不允許的。

        子類的對(duì)象即是父類的對(duì)象。反之不然,父類的對(duì)象不是它的子類對(duì)象。例如:SuperA supa=new SubA();這條語(yǔ)句是語(yǔ)法允許的,父類對(duì)象supa能夠被賦值為子類對(duì)象new SubA();而SuBA suba=new SuperA();這條語(yǔ)句編譯是不能通過的,因?yàn)樽宇悓?duì)象suba是不能能夠被賦值為父類對(duì)象new SuperA()的。

        2 單重繼承和多重繼承

        子類直接上一層的父類稱為直接父類,如果一個(gè)類只有一個(gè)直接父類則稱這樣的繼承為單重繼承,一個(gè)類也可以是多個(gè)直接父類的子類,它從多個(gè)父類中繼承了屬性與服務(wù),這樣的繼承稱為多重繼承。

        在單重繼承方式下,父類與子類是一對(duì)多的關(guān)系,一個(gè)子類只有一個(gè)直接父類,但一個(gè)父類可以有多個(gè)子類,每個(gè)子類又可以作為父類再有自己的子類。

        3 Java中類的繼承

        Java只支持單重繼承機(jī)制,不支持多重繼承,單重繼承使得Java結(jié)構(gòu)簡(jiǎn)單,層次清楚,更安全可靠,從而避免了C++中因多重繼承而引起的難以預(yù)測(cè)的錯(cuò)誤。所以聲明的類只能有一個(gè)父類。子類的聲明格式為: [<修飾符>]class<子類名>extends<超類名>,從中我們也能清楚看出Java中類的繼承關(guān)系為單重繼承關(guān)系。在Java中,一個(gè)父類可以有多個(gè)子類,每個(gè)子類又可以作為父類再有自己的子類。由此形成具有樹形結(jié)構(gòu)的層次體系,其中具有繼承關(guān)系的、相距多個(gè)層次的類之間稱為祖先類和后代類,父類也稱為直接祖先類。這種樹形繼承關(guān)系并不違反Java的單重繼承原則。

        其實(shí),在Java中,每個(gè)類都有父類,如果沒有顯式地標(biāo)明類的父類,則隱含地假設(shè)超類為語(yǔ)言包java.lang中說明的Object類。

        在Java中,子類對(duì)象對(duì)父類成員的訪問權(quán)限主要依據(jù)如下規(guī)則進(jìn)行:

        1)子類對(duì)父類的私有成員(private)沒有訪問權(quán)限;

        2)子類對(duì)父類的公有成員(public)和保護(hù)成員(protected)具有訪問權(quán)限;

        3)子類對(duì)父類中缺省權(quán)限成員(default)的訪問分為兩種情況,對(duì)同一包中父類的缺省權(quán)限成員具有訪問權(quán)限,而對(duì)不同包中父類的缺省權(quán)限成員則沒有訪問權(quán)限。

        4 Java中接口的繼承

        Java只支持單重繼承機(jī)制,但是實(shí)際應(yīng)用中有時(shí)候也需要使用多重繼承這個(gè)功能。

        Java中關(guān)于接口實(shí)現(xiàn)的聲明格式為: [<修飾符>] class<類名> [extends<超類名>] [implements<接口名1>,<接口名2>,…],從中我們可以看出一個(gè)類通過關(guān)鍵字implements實(shí)現(xiàn)了一系列的接口,這實(shí)際上就變相地完成了多重繼承的功能,所以通常我們說Java只支持單重繼承,不支持多重繼承,但是卻可以通過接口來實(shí)現(xiàn)多重繼承的功能。

        問題在于Java中接口本身的繼承關(guān)系是單重繼承還是多重繼承呢?我們?cè)趯W(xué)習(xí)接口的時(shí)候知道,編譯的時(shí)候接口會(huì)像類一樣被編譯,所以很多人就非常簡(jiǎn)單地認(rèn)為接口既然被當(dāng)成類編譯,那么自然接口的繼承性也和類一樣是單重的,這也正好和Java的單重繼承原則不謀而合。事實(shí)上這樣的理解是完全錯(cuò)誤的,恰恰相反,接口的本身的繼承性卻是多重的。我們看下面一段程序(程序名為ClassABCTest.java):

        程序能正常編譯,運(yùn)行結(jié)果為(見圖1):

        圖1 程序ClassABCTest.java運(yùn)行結(jié)果

        程序中我們聲明了三個(gè)接口InterA、InterB、InterC和兩個(gè)類 ClassABC、ClassABCTest。接口InterA和InterB是兩個(gè)獨(dú)立的接口,而接口InterC用關(guān)鍵字extends繼承了接口InterA和InterB,事實(shí)顯而易見,這是多重繼承關(guān)系,即接口InterC同時(shí)繼承了接口InterA和InterB。

        5 結(jié)束語(yǔ)

        綜上,Java中類的繼承是單重繼承,但是卻可以通過一個(gè)類實(shí)現(xiàn)多個(gè)接口這種方法來實(shí)現(xiàn)多重繼承的功能,或者直接通過一個(gè)接口繼承多個(gè)接口來實(shí)現(xiàn)多重繼承的功能。接口不僅很好地解決了多重繼承,對(duì)于單重繼承層次較多、間接父類多的類結(jié)構(gòu),接口還可以避免子類成員的膨脹、龐雜、難以管理等問題,但接口仍然存在不一致性等問題。

        即便是運(yùn)用一個(gè)具有較全而完整的繼承機(jī)制的語(yǔ)言,實(shí)際應(yīng)遵循的原則也應(yīng)該是盡可能保持繼承層次體系的簡(jiǎn)單性,只有在條件非常充分的情況下才使用多重繼承。

        [1]許曉寧.JAVA技術(shù)實(shí)用教程[M].南京:東南大學(xué)出版社,2005.

        [2]葉核亞.JAVA2程序設(shè)計(jì)實(shí)用教程(第2版)[M].北京:電子工業(yè)出版社,2007.

        [3]布雷恩,等.JAVA2精要語(yǔ)言詳解與編程指南[M].北京:清華大學(xué)出版社,2002.

        [4]朱喜福.Java程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004.

        [5]王行言.JAVA語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:清華大學(xué)出版社,2000.

        [6]劉藝.JAVA程序設(shè)計(jì)大學(xué)教程[M].北京:機(jī)械工業(yè)出版社,2006.

        [7]Ian Joyner(著).對(duì)象揭秘:Java,Eiffel和c++[M].鮑志云(譯).北京:人民郵電出版社,2003.

        猜你喜歡
        程序
        給Windows添加程序快速切換欄
        電腦愛好者(2020年6期)2020-05-26 09:27:33
        試論我國(guó)未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        基于VMM的程序行為異常檢測(cè)
        偵查實(shí)驗(yàn)批準(zhǔn)程序初探
        我國(guó)刑事速裁程序的構(gòu)建
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        恐怖犯罪刑事訴訟程序的完善
        久久99中文字幕久久| 人妻少妇-嫩草影院| 久久精品国产久精国产爱| 337p日本欧洲亚洲大胆| 美女无遮挡免费视频网站| 亚洲爆乳少妇无码激情| 国产污污视频| 99久久免费中文字幕精品| 女优av性天堂网男人天堂| 精品亚洲天堂一区二区三区| 中文字幕人妻在线中字| 亚洲国产成人片在线观看无码| 蜜桃成人无码区免费视频网站| 久久频道毛片免费不卡片| 国产亚洲日本人在线观看| 国内偷拍视频一区二区| 不卡视频在线观看网站| 亚洲av福利天堂一区二区三| 国产精品亚洲综合色区| 国产亚洲精品久久久久婷婷瑜伽 | 国产av精选一区二区| 日本区一区二区三视频| 一区二区和激情视频| 一本色道久久88综合日韩精品| 48沈阳熟女高潮嗷嗷叫| 中国年轻丰满女人毛茸茸| 人妻人妻少妇在线系列| 久久国产精品av在线观看| 在线观看国产视频午夜| 亚洲爆乳无码专区www| 欧洲一卡2卡三卡4卡免费网站 | 色噜噜av亚洲色一区二区| 精品无码国产污污污免费网站| 亚洲韩国在线| 国产精品女同av在线观看 | 99精品一区二区三区无码吞精 | 日韩无码尤物视频| 曰日本一级二级三级人人| 国产精品无码一区二区三区在| 97久久精品无码一区二区天美| 久久综合第一页无码|