數(shù)據(jù)加載中……
          java筆記3

          對(duì)象的特征:狀態(tài)(state)和行為(behabior)
          人          身高,體重     吃飯,睡覺(jué)


          現(xiàn)實(shí)世界對(duì)象的狀態(tài)保存在軟件對(duì)象的變量中,先是世界對(duì)象的行為通過(guò)軟件對(duì)象的方法(函數(shù))來(lái)實(shí)現(xiàn)、。

          類和對(duì)象
          把相似的對(duì)象歸成一個(gè)類。
          類就是模版定義了通用與一個(gè)特定種類的所有對(duì)象的狀態(tài)(變量)和行為(方法)
          類是創(chuàng)建對(duì)象的模版,對(duì)象是類的實(shí)例。
          掌握面向?qū)ο蟮碾y點(diǎn)在于思路的轉(zhuǎn)換,我們通常考慮解決問(wèn)題的方法。而不是考慮將問(wèn)題抽象成對(duì)象再去解決它。
          編寫(xiě)一個(gè)駕駛汽車(chē)的方法
          面向過(guò)程的程序設(shè)計(jì): 編寫(xiě)一個(gè)方法,void drivercar();
          面向?qū)ο蟮某绦蛟O(shè)計(jì): 將一輛汽車(chē)看成一個(gè)對(duì)象,將所有汽車(chē)對(duì)象的共性抽取出來(lái),設(shè)計(jì)一個(gè)類Car,
            類中有一個(gè)方法void drive(),用Car這個(gè)類實(shí)例化一個(gè)具體的對(duì)象car,調(diào)用:car.drive().
           
           
           new關(guān)鍵字的作用。
            為對(duì)象分配內(nèi)存空間,引起對(duì)象構(gòu)造方法的調(diào)用。為對(duì)象返回一個(gè)引用。 
           
           
            構(gòu)造方法的名字和類名相同,并且沒(méi)有返回值。
            構(gòu)造方法主要用于為類的對(duì)象定義初始化狀態(tài)。
            我們不能直接調(diào)用構(gòu)造方法,必須通過(guò)new關(guān)鍵字來(lái)自動(dòng)調(diào)用,從而創(chuàng)建類的實(shí)例。
            java的類都要求有構(gòu)造方法,如果沒(méi)有定義構(gòu)造方法,java編譯器會(huì)為我們提供一個(gè)缺省的構(gòu)造方法,也就是不帶參數(shù)的構(gòu)造方法。
            缺省構(gòu)造方法默認(rèn)值:數(shù)值         0
                                booeean    false
                                char       ”\0"
                                對(duì)象       null
                               
          方法的重載:重載構(gòu)成的條件:方法的名稱相同,但是參數(shù)類型或參數(shù)個(gè)數(shù)不同,才能構(gòu)成方法的重載。


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

          繼承
           
             繼承是面向?qū)ο蟮年P(guān)鍵
             在java中,通過(guò)關(guān)鍵字extends繼承一個(gè)已有的類,被繼承的稱為父類(超類,基類),新的類稱為子類(派生類)。
             在java中,不允許多繼承。
            
          方法的覆蓋
          在子類中定義一個(gè)與父類同名、返回類型、參數(shù)類型均相同的一個(gè)方法,稱為方法的覆蓋。覆蓋發(fā)生在子類與父類之間。
             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,提供了對(duì)父類的訪問(wèn)。
             可以使用super訪問(wèn)父類被子類隱藏的變量或覆蓋的方法。
             每個(gè)子類構(gòu)造方法的第一條語(yǔ)句,都是隱含的調(diào)用super(),如果父類沒(méi)有這種形勢(shì)的構(gòu)造函數(shù),那么在編譯的時(shí)候就會(huì)報(bào)錯(cuò)。
            
             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();
            
           }
          }
            
             多態(tài)性,子類有就調(diào)用子類的。沒(méi)有就調(diào)用父類的
             instanceof
             比較一個(gè)實(shí)例是否是一個(gè)類的實(shí)例

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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 玛沁县| 衡东县| 镇雄县| 朝阳市| 常山县| 岫岩| 太湖县| 连云港市| 都江堰市| 休宁县| 湘潭市| 道真| 漳州市| 陕西省| 武穴市| 泰安市| 嘉荫县| 湟源县| 张家川| 东阳市| 遂溪县| 林芝县| 武定县| 革吉县| 楚雄市| 景洪市| 察雅县| 聂荣县| 神农架林区| 贵定县| 镇远县| 长顺县| 新干县| 嘉荫县| 黄陵县| 尤溪县| 芒康县| 汾阳市| 云安县| 乐山市| 城固县|