性格決定命運(yùn),氣度影響格局
          posts - 20, comments - 18, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          java入門與加深 系列 相關(guān)文章
          (轉(zhuǎn)) java入門與加深 -- 1.基礎(chǔ)篇
          (轉(zhuǎn)) java入門與加深 -- 2.命令篇  
          (轉(zhuǎn)) java入門與加深 -- 3.I/O篇  
          (轉(zhuǎn)) java入門與加深 -- 4.關(guān)鍵字篇
          (轉(zhuǎn)) java入門與加深 -- 5.面向?qū)ο笃?
          (轉(zhuǎn)) java入門與加深 -- 6.java.util篇

          34 extends和implements有什么不同?
            答:extends用于(單)繼承一個類(class),而implements用于實現(xiàn)一個接口(interface)。
            interface的引入是為了部分地提供多繼承的功能。
            在interface中只需聲明方法頭,而將方法體留給實現(xiàn)的class來做。
            這些實現(xiàn)的class的實例完全可以當(dāng)作interface的實例來對待。
            有趣的是在interface之間也可以聲明為extends(單繼承)的關(guān)系。

          35 java怎么實現(xiàn)多繼承?
            答:java不支持顯式的多繼承。
            因為在顯式多繼承的語言例如c++中,會出現(xiàn)子類被迫聲明祖先虛基類構(gòu)造函數(shù)的問題,

            而這是違反面向?qū)ο蟮姆庋b性原則的。
            java提供了interface和implements關(guān)鍵字來部分地實現(xiàn)多繼承。參見34。

          36 abstract是什么?
            答:被聲明為abstract的方法無需給出方法體,留給子類來實現(xiàn)。
            而如果一個類中有abstract方法,那么這個類也必須聲明為abstract。
            被聲明為abstract的類無法實例化,盡管它可以定義構(gòu)造方法供子類使用。

          37 public,protected,private有什么不同?
            答:這些關(guān)鍵字用于聲明類和成員的可見性。
            public成員可以被任何類訪問,
            protected成員限于自己和子類訪問,
            private成員限于自己訪問。
            Java還提供了第四種的默認(rèn)可見性,當(dāng)沒有任何public,protected,private修飾時,成員是包內(nèi)可見
            類可以用public或默認(rèn)來修飾。

          38 Override和Overload有什么不同?
            答:Override是指父類和子類之間方法的繼承關(guān)系,這些方法有著相同的名稱和參數(shù)類型。
            Overload是指同一個類中不同方法(可以在子類也可以在父類中定義)間的關(guān)系,這些方法有著相同的名稱和不同的參數(shù)類型。

          39 我繼承了一個方法,但現(xiàn)在我想調(diào)用在父類中定義的方法。
            答:用super.xxx()可以在子類中調(diào)用父類方法。

          40 我想在子類的構(gòu)造方法中調(diào)用父類的構(gòu)造方法,該怎么辦?
            答:在子類構(gòu)造方法的第一行調(diào)用super(...)即可。

          41 我在同一個類中定義了好幾個構(gòu)造方法并且想在一個構(gòu)造方法中調(diào)用另一個。
            答:在構(gòu)造方法第一行調(diào)用this(...)。

          42 我沒有定義構(gòu)造方法會怎么樣?
            答:自動獲得一個無參數(shù)的構(gòu)造方法。

          43 我調(diào)用無參數(shù)的構(gòu)造方法失敗了。
            答:如果你至少定義了一個構(gòu)造方法,就不再有自動提供的無參數(shù)的構(gòu)造方法了。
            你需要顯式定義一個無參數(shù)的構(gòu)造方法。

          44 我該怎么定義類似于C++中的析構(gòu)方法(destructor)?
            答:提供一個void finalize()方法。在Garbarge Collector回收該對象時會調(diào)用該方法。
            注意實際上你很難判斷一個對象會在什么時候被回收。作者從未感到需要提供該方法。

          45 我想將一個父類對象轉(zhuǎn)換成一個子類對象該怎么做?
            答:強(qiáng)制類型轉(zhuǎn)換。如
            public void meth(A a)
            {
            B b = (B)a;
            }
            如果a實際上并不是B的實例,會拋出ClassCastException。所以請確保a確實是B的實例
            。

          46 其實我不確定a是不是B的實例,能不能分情況處理?
            答:可以使用instanceof操作符。例如
            if( a instanceof B )
            {
            B b = (B)a;
            }
            else
            {
            ...


            }

          47 我在方法里修改了一個對象的值,但是退出方法后我發(fā)現(xiàn)這個對象的值沒變!
            答:很可能你把傳入?yún)?shù)重賦了一個新對象,例如下列代碼就會造成這種錯誤:
            public void fun1(A a) //a是局部參數(shù),指向了一個外在對象。
            {
            a = new A(); //a指向了一個新對象,和外在對象脫鉤了。如果你要讓a作為傳
            出變
            量,不要寫這一句。
            a.setAttr(attr);//修改了新對象的值,外在對象沒有被修改。
            }
            基本類型也會出現(xiàn)這種情況。例如:
            public void fun2(int a)
            {
            a = 10;//只作用于本方法,外面的變量不會變化。
            }

          評論

          # re: java入門與加深 -- 5.面向?qū)ο笃?轉(zhuǎn)載  回復(fù)  更多評論   

          2007-10-30 15:51 by 尚小豬豬
          好東西,謝謝版主,嘎嘎!!!!

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 施甸县| 西乌| 车险| 吴川市| 乐山市| 吉安市| 灵丘县| 沙洋县| 兰溪市| 门头沟区| 仙居县| 隆回县| 阿坝县| 岚皋县| 安岳县| 临夏市| 巴楚县| 金塔县| 津市市| 宁波市| 新民市| 黄骅市| 城步| 揭西县| 砀山县| 陇西县| 东山县| 沈阳市| 绵竹市| 乡宁县| 百色市| 乌苏市| 南陵县| 察雅县| 台中市| 海城市| 西城区| 宜兴市| 罗田县| 封开县| 渝中区|