數據加載中……
          java筆記3

          對象的特征:狀態(state)和行為(behabior)
          人          身高,體重     吃飯,睡覺


          現實世界對象的狀態保存在軟件對象的變量中,先是世界對象的行為通過軟件對象的方法(函數)來實現、。

          類和對象
          把相似的對象歸成一個類。
          類就是模版定義了通用與一個特定種類的所有對象的狀態(變量)和行為(方法)
          類是創建對象的模版,對象是類的實例。
          掌握面向對象的難點在于思路的轉換,我們通常考慮解決問題的方法。而不是考慮將問題抽象成對象再去解決它。
          編寫一個駕駛汽車的方法
          面向過程的程序設計: 編寫一個方法,void drivercar();
          面向對象的程序設計: 將一輛汽車看成一個對象,將所有汽車對象的共性抽取出來,設計一個類Car,
            類中有一個方法void drive(),用Car這個類實例化一個具體的對象car,調用:car.drive().
           
           
           new關鍵字的作用。
            為對象分配內存空間,引起對象構造方法的調用。為對象返回一個引用。 
           
           
            構造方法的名字和類名相同,并且沒有返回值。
            構造方法主要用于為類的對象定義初始化狀態。
            我們不能直接調用構造方法,必須通過new關鍵字來自動調用,從而創建類的實例。
            java的類都要求有構造方法,如果沒有定義構造方法,java編譯器會為我們提供一個缺省的構造方法,也就是不帶參數的構造方法。
            缺省構造方法默認值:數值         0
                                booeean    false
                                char       ”\0"
                                對象       null
                               
          方法的重載:重載構成的條件:方法的名稱相同,但是參數類型或參數個數不同,才能構成方法的重載。


          特殊變量this
               this變量代表對象本身。
               當類中有兩個同名變量,一個屬于類(類的成員變量),而另一個屬于某個特定的方法(方法的局部變量),
            使用this區分成員變量和局部變量
               使用this簡化構造函數的調用。可以通過不帶參數的構造方法調用帶參數的構造方法。
               Point(int a,int b)
           {
            x=a;
            y=b;
           }
           Point()
           {
            this(1,2);
           }
           一個類所有的實力(對象)調用的成員方法在內存中只有一份拷貝,盡管在內存中可能有多個對象,
          而數據成員在類的每個對象所在內存中都存在這一份拷貝。this變量允許相同的實例方法為不同的對象工作。
          每當調用一個實例方法時,this變量將被設置成引用改實例方法的特定的類對象。方法的代碼接著會與this所代表的特定數據建立關聯。
              
              內存模型 的概念
           
               靜態方法和靜態變量時屬于某一個類,而不屬于類的對象。
               靜態方法和靜態變量的引用直接通過類名引用。
               在靜態方法中不能調用非靜態的方法和引用非靜態的成員變量。反之,則可以。
               可以用類的對象obj去調用靜態的方法method(),如 obj。method()。
              
           
            final定義的變量要在定義時初始化也可以放在構造函數中實現
            常量通常定義為靜態的,是為了節省內存。這時就要在定義時初始化。
            final定義的常量一般默認用大寫。

          繼承
           
             繼承是面向對象的關鍵
             在java中,通過關鍵字extends繼承一個已有的類,被繼承的稱為父類(超類,基類),新的類稱為子類(派生類)。
             在java中,不允許多繼承。
            
          方法的覆蓋
          在子類中定義一個與父類同名、返回類型、參數類型均相同的一個方法,稱為方法的覆蓋。覆蓋發生在子類與父類之間。
             class Animal
          {
           int height,weight;
           void eat()
           {
            System.out.println("animal eat");
           }
           void breathe()
           {
            System.out.println("animal breathe");
           }
           void sleep()
           {
            System.out.println("animal sleep");
           }
           
          }
          class Fish extends Animal
          {
           void breathe()
           {
            System.out.println("fish bubble");
           }
          }
          class Integration
          {
           public static void main(String[] args)
           {
            Animal an=new Animal();
            Fish fh= new Fish();
            
            an.breathe();
            fh.height=30;
            fh.breathe();
            
           }
          }
             特殊變量super,提供了對父類的訪問。
             可以使用super訪問父類被子類隱藏的變量或覆蓋的方法。
             每個子類構造方法的第一條語句,都是隱含的調用super(),如果父類沒有這種形勢的構造函數,那么在編譯的時候就會報錯。
            
             class Animal
          {
           int height,weight;
           void eat()
           {
            System.out.println("animal eat");
           }
           void breathe()
           {
            System.out.println("animal breathe");
           }
           void sleep()
           {
            System.out.println("animal sleep");
           }
           
          }
          class Fish extends Animal
          {
           void breathe()
           {
            super.breathe();
            super.height=40;
            System.out.println("fish bubble");
           }
          }
          class Integration
          {
           public static void main(String[] args)
           {
            //Animal an=new Animal();
            Fish fh= new Fish();
            
            //an.breathe();
            fh.height=30;
            fh.breathe();
            
           }
          }
            
             多態性,子類有就調用子類的。沒有就調用父類的
             instanceof
             比較一個實例是否是一個類的實例

          posted on 2007-08-26 18:48 rick 閱讀(194) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 麻栗坡县| 浠水县| 将乐县| 仲巴县| 恩施市| 廊坊市| 蓝山县| 广河县| 宁津县| 宜川县| 大姚县| 临猗县| 明光市| 达拉特旗| 苏尼特左旗| 长岭县| 金秀| 美姑县| 玉环县| 邯郸县| 佛山市| 茌平县| 任丘市| 年辖:市辖区| 武宣县| 兴山县| 兴安盟| 临夏市| 石狮市| 巴马| 双辽市| 宝兴县| 苏尼特左旗| 河津市| 宁陕县| 库尔勒市| 全南县| 桐柏县| 洪江市| 剑阁县| 罗平县|