天天看點

面向對象基礎(1)

在面向對象中最重要的部分就是類與對象。

類實際上是一個共性的産物,而對象隻是一個個的具體的實作。

類中規定了對象所具備的一切功能,而類是依靠對象所使用的。

如果要想使用一個類,則必須有一個對象存在。

根據class可以聲明一個類,類中包含屬性和方法。

       屬性:例如:人的姓名、年齡等,這些屬性可以完全的代表一個抽象的類型。

       方法:例如:人的具體的功能,說話、唱歌等。 。。。。

按照以上的格式定義一個類:Person

class Person{

         // 屬性

         String name ;

         int age ;

         public void talk(){

                   System.out.println("姓名:"+name+",年齡:"+age) ;

         }

};

有類了之後如果要使用類,則必須産生對象。

<b>産生對象的基本格式:</b>

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

<b>通過對象調用類中的屬性:</b>

       對象名稱.屬性名稱 = 值

public class OODemo01{

         public static void main(String args[]){

                   Person p = new Person() ;

                   p.name = "張三" ;

                   p.age = 30 ;

                   p.talk() ;

       由以上代碼可以發現,類就是通過對象使用的。對象使用之前必須先開辟空間,之後才可以使用。

<b>具體分析:類的執行個體化過程</b>

       Person p = new Person() ;

       實際上以上的代碼要分為兩個部分:

       · <b>聲明對象:</b>Person p = null ;

       · <b>執行個體化對象:</b>p = new Person() ;

              |- 對象隻有在執行個體化之後才可以使用

       如果直接使用了沒有執行個體化(用new開辟空間或是其他方式執行個體化的)對象,則會出現以下的錯誤:

Exception in thread "main" java.lang.<b>NullPointerException</b>

        at OODemo01.main(OODemo01.java:13)

<b>對象執行個體化之後的記憶體劃分:</b>

<b>       </b><b>之前說了,對象的産生需要兩個步驟</b>

<b>       </b><b>· </b><b>第一步是聲明對象,實際上聲明對象就是指在棧記憶體中開辟了一段空間,但是此空間并不代表具體的内容</b>

<b>       </b><b>· </b><b>第二步是執行個體化對象,一旦使用了new</b><b>關鍵字(隻要看見new</b><b>就表示要在堆記憶體中開辟空間),之後會在堆記憶體中開辟一段相應的空間,之後把此空間的使用權給了棧記憶體中聲明的對象。在堆記憶體中儲存的是一個對象所具備的全部的屬性。</b>

<b>       </b><b>所有的方法是儲存在全局代碼區之中。即:所有的對象都共同擁有同一種方法,隻是裡面的屬性的值不一樣。</b>

<b> </b>

<b>       public void talk(){</b>

<b>              System.out.println("</b><b>姓名:"+</b>name<b>+"</b><b>,年齡:"+</b>age<b>) ;</b>

<b>       }</b>

如果現在産生了第二個對象,兩個對象之間會互相影響嗎?

public class OODemo02{

                   Person p1 = null ;

                   Person p2 = null ;

                   p1 = new Person() ;

                   p2 = new Person() ;

                   p1.name = "張三" ;

                   p1.age = 30 ;

                   p1.talk() ;

                   p2.name = "李四" ;

                   p2.talk() ;

p1和p2兩個對象分别占着不同的記憶體空間,是以是不會互相影響的。

類屬于引用資料類型,引用就是指可以将一段空間的使用權交給另外一個對象。

傳遞的是堆記憶體的使用空間,說白了就是為一個已有的對象起一個别名出來,以後可以通過此别名通路對象的具體内容。

public class OODemo03{

                   p2 = p1 ;

觀察以下的程式代碼,分析其記憶體配置設定過程:

public class OODemo04{

                   p1.age = 20 ;

在java中所有的不用的記憶體空間統一稱為垃圾,在JAVA中存在自動收集機制,會定期的收集垃圾。

<b>類中方法的互相調用:</b>

       一個類中可以存在多個方法,而且多個方法之間也可以互相進行調用。

                   // print() ;

                  // 如果非要明确的表示出是在一個類中的調用,可以按以下形式調用

                   this.print() ;

         public void print(){

                   System.out.println("Hello World!!!") ;

this強調的是在本類之中的操作。

本文轉自 李興華 51CTO部落格,原文連結:http://blog.51cto.com/lixinghua/91230,如需轉載請自行聯系原作者

上一篇: 封裝性
下一篇: this關鍵字

繼續閱讀