物件 與 類別
Java是以物件導向為主的程式語言,所以搞清楚物件導向的邏輯將是學習Java最重要的一件事。
1 物件的觀念
物件的觀念其實在日常生活中很容易看到,以車子製造商為例:
- 車子就是一個類別
- 一輛車會擁有許多不同的特徵,例如大小、名稱、座椅、方向盤、顏色等...
- 一輛車會擁有許多不同的功能,例如煞車、加速、打方向燈等
把這些轉換成虛擬碼來想像的話
車子{
屬性:
名稱:
大小:
方向盤:
顏色:
功能:
煞車()
加速()
打方向燈()
}
每輛車的特徵和功能有可能相同也可能不同,以車這個類別來說,就有跑車、休旅車、一搬家用車、公車等...,這些就稱為物件,他們分別有屬於自己的屬性和功能,但他們都同屬於 車子 這個類別
Object又被稱為class的Instance,class就像是一張設計圖,而Object就像按照設計圖實做出來的Instance
如果了解了class與Object的觀念後,接下來我們就要知道程式碼該如何撰寫
2 宣告類別、物件
modifier class ClassName{
....
}
modifier為修飾字,有public、private等,之後會再詳細介紹
2-1 類別的構成
- 建構子
- 變數 (屬性、特徵)
- 方法 (功能)
//PURPOSE:建立一個汽車物件
public class Car {
//變數
private String name;
private String color;
//建構子
public Car(){
name="car";
color="black";
}
public Car(String n,String c){
name=n;
color=c;
}
//方法
public void car_break(){
System.out.println(name+"煞車中");
}
public void Speed_up(){
System.out.println(name+"加速中");
}
}
2-2 constructor
在上述Class Car中,可以看到有一個function名稱與Class名稱相同,而且它並沒有設定它的返回值屬性,這就稱為一個類別的建構子(Constructor)
public Car(){
name="car";
color="black";
}
public Car(String n,String c){
name=n;
color=c;
}
建構子會在我們用new來建構一個物件實體時被呼叫,編譯器會按照你傳遞的參數,來選擇要使用哪個建構子。
若沒特別撰寫建構子的話,會呼叫到Java自動產生的預設建構子
若我們建立了自己設定的建構子,即使沒有要用到預設建構子,也建議寫一個預設建構子
2-3 建立物件
//PURPOSE:建立類別為車的計程車物件
//以下兩個不同物件產生,會呼叫不同的建構子
Car taxi=new Car();
Car taxi=new Car("Taxi","yellow");
2-4 呼叫方法
ObjectName.functionName( parameter );
taxi.car_break();
-----------------
Taxi煞車中
2-5 我們早已用過的類別Scanner
由此處可以看出,之前我們也常常在不了解class的狀況下就使用了他,例如最常被使用的scanner
Scanner s = new Scanner(System.in);
其實我們就是在建立一個Scanner類別的物件,名叫s
int i=s.nextInt();
這就是在使用class Scanner內建的method來存取使用者輸入的值
如果忘記類別要如何使用,可以回想一下過去使用Scanner的方式