天天看點

Java 第4章 面向對象程式設計初步

Java 第4章 面向對象程式設計初步

主要内容

 Java語言面向對象的程式設計語言,面向對象是Java程式設計中非常重要的内容,如何用面向對象的觀點去分析和解決問題是學習Java語言的重點。

類和對象:

類和對象

     類和對象是面向對象程式設計的核心。編寫程式對一個問題的求解的過程可以看作是定義類和對象的過程。

對象:是構成系統的最基本的機關。

 屬性:描述對象的靜态特征

 行為:描述對象的動态特征

類:一批具有相同屬性及行為的對象的抽象。

類和對象的關系:

對象----抽象--->類-----執行個體化---->對象

類的定義

定義類的簡單文法格式

[修飾符] class 類名(合法的辨別符,應遵循編碼慣例

){

        //成員變量

        //構造方法

        // 成員方法

}

注意:[ 修飾符 ]可以是:[ public ][ abstract | final ]

修飾符和含義:

abstract    該類為抽象類(不能用new執行個體化一個對象)

final         該類為最終類(不能被其他類繼承)              

public       該類為公共類(可以從其它類中通路)          

預設       該類為friendly類(隻能被本包中的類使用)

定義成員變量:[修飾符] 類型 成員變量名[=初始值];

修飾符:

[public|protected|private][static][final]

成員變量名應是一個合法的辨別符,并且應遵循編碼慣例;

初始值:定義變量還可以定義一個可選的初始值。

注意:變量名應該由一個或多個有意義的單詞組合而成,第一個單詞首字母小寫,後面每個單詞首字母大寫,其他字母全部小寫,單詞與單詞之間不需使用任何分隔符 。

成員方法的定義

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

         //  方法體;

}

修飾符:

[public|protected|private][static|][abstract|final]

傳回值類型:可以是Java語言的任何資料類型,如果聲明了傳回值類型,則方法體内必須有一個有效的return語句,該語句傳回一個變量或表達式的值,變量或者表達式的類型必須與方法傳回值類型比對;如果一個方法沒有傳回值,則必須使用void來聲明。

方法名:命名規則與變量名的命名規則基本相同,但通常建議方法名以英文中的動詞開頭。

構造方法:是類中的特殊的方法

構造方法的名稱和類名相同;

構造方法沒有傳回值,不需void來聲明;

當該類被執行個體化時,構造方法自動被調用。是以,構造函數的作用—對類對象中的成員進行初始化。

[修飾符(public、protected、private)]  類名 ([形參清單]){

//構造方法的方法體

}

例4.1 定義Car類

public class Car{

public String name;

public String color;

public Car(String name1,String color1){

name=name1;        color=color1;

}

public void run(String speed){

System.out.println(speed);

}

}

對象的建立

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

      Car c;

      c=new Car("QQ","黃色"); 

    記憶體的存儲情況:

對象的使用

格式:對象.成員變量

           對象(對象是主調者,用于通路該對象的變量或方法。).成員方法名([實參表]);

public class TestCar{

  public static void main(String args[]){

        Car  c;

        c=new Car("奔馳600","黑色");

        c.run("100km");

        System.out.println(c.name);

  }

}

對象的指派

     Car  c1,c2;

c1=new Car("奔馳600","銀灰色");

c2=c1;

c1.name和c2.name通路的是同一個對象中的name成員。

當c1=null;c2=null;則:該對象不能被識别。

總結:對象的聲明周期

對象的建立------>對象的使用----->對象的清除

如果對象(執行個體)的使命完成,應該将其被從記憶體中删除。

當某個對象不在被任何引用變量引用時,該對象将被清除

通過記憶體垃圾自動收集機制(finalizer)清除無用對象。

類名 變量 [=new 類的構造函數(實參)]

例如:Car obj=new Car(“奔馳600”,“銀灰色”);

對象名.成員變量名    或   對象名.成員方法名(實參表)

例如:obj.name=“寶馬”;  或  obj. run(100);     

補充—構造方法的重載

預設構造:public   類名(不帶參數,方法體為空。作用:自動初始化成員變量為預設值。)(){}

構造方法的重載:當一個類有多個重載的構造方法時,建立該類對象的語句會根據給出的實際參數的個數、參數的類型、參數的順序自動調用相應構造方法。

public class Car{

      String name,color;

      public Car(){

                   name=“汽車”;color=“black”;      

      }

      public Car(String n,String c){

                  name=n;color=c;    

     }//Car c1=new Car();

//Car c2=new Car(“夏利”,”綠色”);

}

this的使用

     Java提供了一個this關鍵字作為自身的引用,其作用就是在類的自身方法中引用該類自身。 

public class Car{

public String name,color;

public int oil;

public Car(String name1,int getOil){

this.name=name1; this.oil=getOil;

}

public void run(int speed){

this.oil-=speed;  System.out.println(speed);

}

在同一個類中,類的成員變量是不能重名的,但方法或語句塊中的局部變量是可以和類的成員變量重名的,這時候必須使用this來限定和區分是否是類變量。

 public class Car{

public String name,color;

public int oil;

public Car(String name,int oil){

this.name=name; this.oil=Oil;

}

public void run(int speed){

int oil=speed;

                     this.oil-=oil;  System.out.println(speed);

}

方法間的互相應用也可以使用this關鍵字

public void highRun(int speed){

          int highSpeed=2*speed;

          this.run(highSpeed);

}

this引用也可以用于構造方法中作為預設引用

注意:this調用語句必須是構造函數中的第一個可執行的語句。