java 學習筆記2 物件導向(上)

來源:互聯網
上載者:User

標籤:awr   構造   建立對象   pre   概念   代碼實現   參數   同名   多個   

類和對象

類是某一批對象的抽象,可以把類理解成某種概念。對象是一個具體存在的實體。類和對象是物件導向的核心。

類定義的是多個執行個體的特徵,類不是具體存在,執行個體才是具體存在。

定義類(class)的文法:

[修飾符] class 類名

{ 零個到多個構造器定義....

   零個到多個成員變數....

   零個到多個方法....}

要點:1.三種常見的成員:構造器(new關鍵字調用) 成員變數 方法   

   2.類名由一個或多個有意義的詞串連而成,每個單字首大寫,其餘小寫。

        3.修飾符可以是public final abstract或省略

 

定義成員變數(field)的文法:

[修飾符] 類型 成員變數名 [=預設值];

要點:1.成員變數名第一個單詞首字母小寫,後面每個單字首大寫,其餘小寫。

         2.類型可以是基本類型,也可以是參考型別。

 

定義方法的文法

[修飾符] 方法傳回值類型 方法名(形參列表)

{方法體}

要點:方法名和成員變數的規則相同,通常選英語動詞。

static是一個特殊的關鍵字,可修飾方法成員變數等成員。static修飾的成員屬於類本身而不屬於該類的單個執行個體,也叫類變數和執行個體變數(靜態變數和非靜態變數)。靜態成員不能訪問非靜態成員。

構造器是一種特殊的方法。

[修飾符] 構造器名(形參列表)

{方法體}

要點:構造器名必須與類名相同

類的作用:定義變數  建立對象 調用類方法或訪問類變數

 

對象的產生和使用

建立對象的根本途徑是構造器,通過new關鍵字來調用某個類的構造器即可建立這個類的執行個體。

例:Persn p=new Person();//定義p變數的同時為p變數賦值

類或執行個體存取方法和成員變數的文法:類.類變數|方法   執行個體.執行個體變數|方法

static修飾的成員變數,可通過類和執行個體調用。沒有static修飾的方法和成員變數,只能通過執行個體來調用。

 

Person p=new Person();   這段代碼建立了Person對象,對象賦值給p變數。

 

person對象賦給一個引用變數的

person類型的變數實際是一個引用,被存放在棧記憶體裡。指向實際的person對象

真正的person對象存放在堆記憶體中

java程式不允許直接存取堆記憶體中的對象,只能通過該對象的引用操作該對象,當訪問p引用變數的成員變數和方法時,實際是訪問p所引用對象的成員變數和方法。

 

對象的this引用

this關鍵字的最大作用,就是讓類中的一個方法,訪問該類裡的另一個方法或執行個體變數。

this關鍵字總是指向調用該方法的對象。

大部分時候,一個方法訪問該類中定義的其他方法,成員變數時加不加this首碼效果完全一樣。

 

方法方法不能獨立定義,方法必須屬於類或對象。

同一個類裡的一個方法調用另一個方法時,如被調方法是普通方法,預設使用this作為被調者,如被調方法是靜態,預設使用類作為調用者。

java裡方法的參數傳遞只有一種:值傳遞 將實際參數的副本傳入方法內而參數本身不受影響。

參數副本分為基本類型的參數和參考型別(地址)的參數

 1 public class PrimitiveTransferTest 2 { 3     public static void swap(int a , int b) 4     { 7         int tmp = a; 8              a = b;10             b = tmp;12         System.out.println("swap方法裡,a的值是"13             + a + ";b的值是" + b);}14    public static void main(String[] args)16     {17         int a = 6;18         int b = 9;19         swap(a , b);20         System.out.println("交換結束後,變數a的值是"21             + a + ";變數b的值是" + b);  }

 1 class DataWrap 2 { 3     int a; 4     int b; 5 } 6 public class ReferenceTransferTest 7 { 8     public static void swap(DataWrap dw) 9     {10         // 下面三行代碼實現dw的a、b兩個成員變數的值交換。11            int tmp = dw.a;13             dw.a = dw.b;15             dw.b = tmp;17         System.out.println("swap方法裡,a成員變數的值是"18             + dw.a + ";b成員變數的值是" + dw.b);19         // 把dw直接賦為null,讓它不再指向任何有效地址。20         dw = null;21     }22     public static void main(String[] args)23     {24         DataWrap dw = new DataWrap();25         dw.a = 6;26         dw.b = 9;27         swap(dw);28         System.out.println("交換結束後,a成員變數的值是"29             + dw.a + ";b成員變數的值是" + dw.b);30     }

 

成員變數和局部變數成員變數是在類裡定義的變數,局部變數實在方法裡定義的變數。

只要類存在,程式可以訪問該類的類變數 類.類變數

只要執行個體存在,程式可以訪問該執行個體的執行個體變數 執行個體.執行個體變數

類變數也可以讓該類的執行個體來訪問    執行個體.類變數

通過執行個體修改類變數的值,會導致該類的其他執行個體訪問這個類變數時也獲得被修改的值。

 

java允許局部變數和成員變數同名,如果方法裡的局部變數和成員變數同名,局部變數會覆蓋成員變數,若需在方法裡調用被覆蓋的成員變數,則可使用this(執行個體變數)或類名(類變數)來調用。

成員變數在記憶體中的運行機制

 

 

java 學習筆記2 物件導向(上)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.