java基礎物件導向之類與對象

來源:互聯網
上載者:User

標籤:oid   屬性   new   print   技術分享   height   ati   操作方法   設計   

java基礎物件導向之類與對象

2017-01-14

1、物件導向的基本概念

    以一種組建化的形式進行代碼設計

    1)在物件導向程式設計中包含有如下幾種特性

        ?封裝性:保護內部結構的安全性

        ?繼承性:在已有的程式結構上擴充新的功能

        ?多態性:在某一個該娘範圍內滿足

     2)物件導向開發分為以下幾個步驟:

        OOA(物件導向分析)

        OOD(物件導向設計)

        OOP(物件導向編程)

2、類與對象

    1)瞭解類與對象的關係

      ?認識類與對象

        類與對象是整個物件導向之中最基礎的組成單元,類是共性的一個集合,而對象是某一個體的產物。

        例如:

           人類(姓名,年齡,工作,除了這些屬性類還包括一些方法比如吃飯,玩等等)

           對象(對象就是具體到某一個人)

 

        類實際上是對象操作的模板,但類不可以直接使用,必須通過執行個體化對象來使用

      

    2)掌握類與對象的定義結構

      ?類與對象的基本定義

        一個類需要包含屬性和方法

        定義類:

1 public class ClassDemo1 { //定義一個類2     public String name ;    //類中的name屬性3     public int age ;        //類中的age屬性4     private void eat() {    //類中的eat()方法5         System.out.println("我在吃飯");6     }7 }

 

        類現在已經產生了,但是如果要使用類,就必須得執行個體化對象。

 

          執行個體化對象的兩種方式:

            ?聲明並執行個體化對象: 類名稱  對象名稱 = new  類名稱() ;

            ?分布完成:

              類名稱  對象名稱  =  null; 

              對象名稱 =  new  類名稱() ;

        引用資料類型與基礎資料型別 (Elementary Data Type)最大的區別就是,引用資料類型需要記憶體的開闢及使用,關鍵字 new 就是開闢記憶體空間,既只要是引用資料類型想要使用,就必須使用關鍵字new來開闢記憶體空間    

        

        使用類:

        對象.屬性:表示類操作屬性中的內容

        對象.方法():表示類操作方法中的內容

 1 class Person1{ 2     public String name ;    //類中的name屬性 3     public int age ;        //類中的age屬性 4     public  void eat() {    //類中的eat()方法 5         System.out.println("我在吃飯"); 6     } 7 } 8 public class ClassDemo1 { //定義一個類 9     public static void main(String args[]){10         Person1 p1 = new Person1() ;    //聲明並執行個體化對象11         p1.eat() ;        //調用Person1類中的eat()方法12     }13 }

 

         對以上程式進行分析:

        堆記憶體:儲存對象的屬性內容,一般使用new關鍵字來開闢堆記憶體空間

        棧記憶體:儲存的是一塊堆記憶體的地址,從嚴格來說占記憶體儲存的是對象的地址,但簡單理解棧記憶體中儲存的就是對象的名稱。 

                                                  

        如果只聲明了對象而沒有執行個體化對象就會出現java.lang.NullPointerException(空指向)異常 。 只要是引用資料類型就有可能出現此異常。

 

 3)掌握對象的記憶體分析

        引用資料的初步分析

                                      

 

         對象的引用傳遞

 1 class Person2{ 2     public String name ;    //類中的name屬性 3     public int age ;        //類中的age屬性 4     public  void eat() {    //類中的eat()方法 5         System.out.println("姓名:"+name + "年齡"+age); 6     } 7 } 8 public class ClassDemo2 { //定義一個類 9     public static void main(String args[]){10         Person2 p2 = new Person2();    //聲明並執行個體化對象11         p2.name="zhangbojie" ;    12         p2.age = 20 ;13         Person2 p3 = null ;14         p3 = p2 ;        //把p2的引用傳遞給P315         p3.name = "張博傑" ;    //p3修改了姓名和年齡 16         p3.age = 21;17         p3.eat() ;        //調用Person2類中的eat()方法18     }19 }

 

                                                              

        此時兩個對象指向 的是同一塊記憶體空間,所以任何一個對象修改了屬性的內容,都會影響另一個對象。 在引用操作過程中,一塊堆記憶體可以被多個棧記憶體索引用。但是反過來,一個棧記憶體只能儲存一塊堆記憶體的地址。

        

        繼續觀察引用傳遞

 1 class Person2{ 2     public String name ;    //類中的name屬性 3     public int age ;        //類中的age屬性 4     public  void eat() {    //類中的eat()方法 5         System.out.println("姓名:"+name + "年齡"+age); 6     } 7 } 8 public class ClassDemo2 { //定義一個類 9     public static void main(String args[]){10         Person2 p2 = new Person2();    //聲明並執行個體化對象11         Person2 p3 = new Person2();12         p2.name="zhangbojie" ;    13         p2.age = 20 ;14         p3 = p2 ;        //把p2的引用傳遞給P315         p3.name = "張博傑" ;    //p3修改了姓名和年齡 16         p2.eat() ;        //調用Person2類中的eat()方法17     }18 }

 

                                                       

       

        通過記憶體的分析可以看出來,在引用資料關係裡面,一塊沒有棧記憶體指向的堆記憶體的空間,就將成為垃圾,所有的垃圾會被記憶體回收機制(GC)不週期性進行回收,回收之後就會釋放掉其所佔的記憶體。

        

        總結:

          1、類描述的是公用的特徵,類必須要執行個體化對象才可以使用。

          2、堆記憶體中儲存的是所有屬性的內容,而棧記憶體儲存的是堆記憶體的地址。

          3、垃圾空間指的是沒有棧記憶體空間引用的堆記憶體空間。

java基礎物件導向之類與對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.