我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks


          ^_^基礎知識,要是不很明白的就看看吧。^_^

          public abstract class Glyph {

           abstract void draw();

           Glyph(){  

            System.out.println("Glyph() before draw()");

            draw();

            System.out.println("Glyph() after draw()");

           }

          }

          public class RoundGlyph extends Glyph {

           private int radius = 1;

           RoundGlyph(int r){ 

          //  radius = r;

            System.out.println(radius);

            System.out.println("RoundGlyph.RoundGlyph(),radius = "+radius);

           }

           void draw() {

            System.out.println("RoundGlyph.draw(),radius = "+radius);

           } 

           public static void main(String[] args) {

            RoundGlyph test = new RoundGlyph(10);

           }

          }

          輸出:

          Glyph() before draw()

          RoundGlyph.draw(),radius = 0

          Glyph() after draw()

          1

          RoundGlyph.RoundGlyph(),radius = 1

          由此得出,初始化的實際過程是:

          1、在其他任何事物發生之前,將分配給對象的存儲空間初始化成二進制零。

          2、調用基類構造器。這個步驟會不斷的反復遞歸下去,首先是構造這種層次結構的根,然后是下一層導出類,等等。直到最低層的導出類。此時,調用被重載的draw()方法(是的,是在調用RoundGlyph構造器之前調用的),由于步驟(1)的緣故,我們此時會發現radius的值為0。

          3、按照聲明的順序調用成員的初始化代碼。在類的內部,初始化的順序是先“靜態”,(如果它們尚未因前面的對象創建過程而被初始化),后“非靜態”。而非靜態變量定義的順序決定了初始化的順序。即使變量定義散布于方法定義之間,它們仍舊會在任何方法(包括構造器)被調用之前得到初始化。

          4、調用導出類的構造器主體。

           

          不知道你看完后,感覺如何,如果不是這幾天惡補基礎知識,我......



          posted on 2007-11-13 17:09 java_蟈蟈 閱讀(298) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 保亭| 巴彦淖尔市| 永仁县| 黔江区| 马鞍山市| 台湾省| 黄浦区| 龙南县| 社旗县| 南雄市| 巩义市| 抚州市| 柳河县| 天津市| 巴林右旗| 枣强县| 巴南区| 高阳县| 靖西县| 新民市| 邵阳市| 黑山县| 夏津县| 区。| 驻马店市| 临西县| 阿拉善右旗| 威信县| 洛扎县| 临泽县| 德令哈市| 游戏| 朝阳区| 淮安市| 宁海县| 平度市| 威宁| 米林县| 庐江县| 佳木斯市| 健康|