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調用語句必須是構造函數中的第一個可執行的語句。