之前我們有介紹到關於封裝的概念,與今天分享的內容「抽象」觀念相似。
兩者目的都是希望達成「隱藏資訊」,保護特定資料!!!
接下來會將抽象成剖析成幾個部分個別去做說明。
宣告方式參考下列程式碼 :
abstract class Car{
protected long price_cost = 1000000;
public String car_brand = "Mercedes";
public void fast(){
System.out.println("300 km/h");
}
public abstract void type(String brand);
}
抽象abstract
是非存取權限之修飾詞,宣告時我們一樣是 “修飾詞 + 類別 + 類別名稱” 的方式
觀察程式,可以發現我們只有宣告fast()
中的內容,而抽象類別的內容為甚麼不一起宣告 ?
fast()
是一般函數 )-> 通常我們會透過繼承其之子類別來進行改寫。
-> 而正因為我們需要被子類別繼承,存取權限修飾詞有一定的限制 :
抽象函數的前置修飾子不能為預設(default) & 隱私(private)
這邊我們繼續介紹關於如何繼承抽象類別的函數。
class information extends Car{
public int modelYear = 2022;
public abstract void type(String brand){
System.out.println(brand + " : " + "GLC SUV");
}
}
此程式中,宣告了抽象函數中的內容。
當我們在主程式需要使用到此部分之內容,則可以創立物件去做使用。
綜合上述,提供以下程式範例 :
abstract class Car{
protected long price_cost = 1000000;
public String car_brand ;
public void fast(){
System.out.println("300 km/h");
}
public abstract void type(); //abstract method
}
class information extends Car{
information(String brand){
super.car_brand = brand;
}
public int modelYear = 2022;
public abstract void type(){
System.out.println(brand + " : " + "GLC SUV"); // the abstract method body
}
}
class Main {
public static void main(String[] args) {
information new_obj = new information("Mercedes");
new_obj.type(); // Outputs -> Mercedes : GLC SUV
}
}
抽象類別是用來被繼承(inheritance) ; 抽象函數是用來被改寫(override)
以上內容若有誤或任何問題,煩請不吝嗇告知,謝謝您!!!