類的基本知識之成員變數、成員方法和構造方法

來源:互聯網
上載者:User

       學習Java中的類要有物件導向的思想,“一切皆對象”。物件導向要和面向過程區分開來。類是對現實事物的一種概念的抽象。用來表現某種具體事物的類,稱之為實體類。一個類中所包含的成員有成員變數和成員方法。其中類的成員變數有靜態變數和執行個體變數兩種,類的成員方法有構造方法、靜態方法(含靜態主方法)和一般的方法(主要有對成員變數的set和get方法,以及一些行為動作)。

    類是具體對象產生的一個模板,而對象是類的一個具體執行個體。

區分靜態變數和執行個體變數:

        靜態變數被static關鍵字修飾,也叫類變數,屬於類的,而不屬於某個執行個體對象。只要順序載入了類的位元組碼,不用建立任何執行個體對象,靜態變數就會被分配空間,就可以使用它了,存放在靜態區裡,可以被類的對象共用。靜態變數的生命週期同類的生命週期一樣,一般使用類名來調用,使用對象來調用也可以,不過不推薦使用。靜態成員變數在類中使用時可以不先初始化,類會直接預設給它初始化。

        執行個體變數是屬於某個對象的屬性,必須建立了執行個體對象才會被分配空間,才能使用這個執行個體變數,存放在堆區。執行個體變數取決於類的執行個體,每建立一個執行個體,Java虛擬機器就會為執行個體變數分配一次記憶體,其生命週期取決於執行個體的生命週期。

        構造方法的特點及其作用:

      (1)構造方法的特點:

A.構造方法的方法名一定要和我們的類型一定要一致。構造方法是一個特殊的方法。

B.構造方法沒有傳回型別,自然沒有傳回值,當然在構造方法中不能使用return。

C.構造方法可以由系統提供一個預設的構造方法。

D.構造方法不需要對象去調用,在我們執行個體化對象時,系統會幫我們去執行構造方法。

     (2)構造方法的作用:

A.向堆區申請用來存放該類對象的記憶體(一個類一旦設計完成之後,其執行個體所佔有的記憶體大小就確定了)。

B.對於類中的所有成員資料進行初始化(賦值)。成員資料可劃分為基本類型和參考型別,其中所有的參考型別的零值都是null。

C.構造一個該類的執行個體,即構造對象---這才是最後一步。

        對類中無參構造方法的理解:

       無參構造方法在類中不是顯示存在的,其樣式是固定的: public className{}在沒有任何構造方法的情況下,這個構造方法會由編譯器自動提供;當在類中定義了任何一個構造方法,則預設的這個構造方法就不複存在了。想讓一個類中具有多個構造方法,每個構造方法都要顯式提供出來。這樣多個構造方法形成了重載。

eg:建立一個Person類,有姓名和年齡兩個屬性,有兩個構造方法(一個無參和一個有參),有一個行為方法eat().

public class TestPerson{public static void main(String[] args){Person p1 = new Person(); //調用無參構造,屬性自動初始化System.out.println("count的值:"+Person.count);Person p2 = new Person("小明",2);System.out.println("count的值:"+Person.count);System.out.println("p1對象的內容:"+p1.getName()+","+p1.getAge());System.out.println("p2對象的內容:"+p2.getName()+","+p2.getAge());     p1.eat();     p2.eat();}}class Person{private String name; //姓名屬性private int age; //年齡屬性static int count; //靜態變數,用來統計對象數(類中預設初始化)public Person(){System.out.println("調用無參構造");count++;}public Person(String name,int age){this.name = name;this.age = age;   System.out.println("調用有參構造") ;   count++;}public String getName(){ return name;} public int getAge(){return age;} public void setName(String name){  this.name = name;  }  public void setAge(int age){  this.age = age;  }  public void eat(){  System.out.println(name+"吃東西");  }}

下面進行記憶體分析:

運行結果為:

調用無參構造

Count的值:1

調用有參構造

Count的值:2

P1對象的內容:null,0

P2對象的內容:小明,2

Null吃東西

小明吃東西

 

聯繫我們

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