日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

抽象的概念

  • 抽象類抽象方法是面向對象編程中的重要概念,用于實現抽象和繼承的特性。
  • 抽象類是不能被實例化的類,通常用作其他類的基類。
  • 抽象方法是在抽象類中聲明但沒有具體實現的方法,需要在子類中實現具體的功能。

抽象類的用途

假設我們開了一個汽車玩具廠,現在要造奔馳寶馬系列玩具。這兩種玩具的功能基本是一致,只是車的喇叭音樂不同。

由于只是車的內置喇叭(trumpet) 不同,那么我們造的時候,我們首先開發一套車的模板 (Car) 即可,車的骨架、內部零件什么的都用一樣的。生產奔馳(Benchi) 系列的車,我們去奔馳車間給他裝上奔馳的內置喇叭 (Benchi extends Car) ;生產寶馬系列的車,我們去寶馬(Baoma) 車間給他裝上寶馬的內置喇叭 (Baoma extends Car)。

現在,我們奔馳系列的車模板和寶馬系列的車模板就造好了,出廠每一個車的時候,給車模套上車殼就完工了。

我們把生產汽車模板的過程抽象成一個Car類。

JAVA復制代碼abstract class Car {
    String name;
    public Car(String name){
        this.name = name;
    }
    // 每個車都可以跑
    void run(){
        System.out.println(this.name + "跑起來了");
    }
    // 每個車的喇叭
    abstract void trumpet()
}

由于每個車都必須有喇叭,因此trumpet方法是必須存在的。但每個系列的車喇叭不同,因此,在Car類中,我們無法具體指明方法內容(沒有寫方法體)。這個trumpet方法就是一個抽象方法, 我們用abstract給他標記一下。

由于Car缺少喇叭、車殼等零件(trumpet是抽象抽象方法,Car因此是抽象類),因此它無法直接生產玩具(不能實例化)。我們需要去不同車間繼續完善它 (只能被子類繼承、完善方法) 。

我們去奔馳車間給他裝上奔馳的喇叭,奔馳系列玩具的車模就做好了。

java復制代碼class Bnechi extends Car {
    public Bnechi(String name){
        super(name);
    }
    public void trumpet(){
        System.out.println("我是奔馳,啦啦啦");
    }
}

然后,我們去寶馬車間給他裝上喇叭,寶馬系列的玩具車模就做好了

scala復制代碼class Baoma extends Car {
    public Baoma(String name){
        super(name);
    }
    public void trumpet(){
        System.out.println("我是寶馬,啦啦啦");
    }
}

最后,我們在奔馳和寶馬車間就可以不斷的生產玩具了。

上面的代碼中,我們定義了一個sountrumpetd方法,這是Car必須有的方法,但是每個子類(奔馳、寶馬)的這個方法是不同的,因此我們無法具體寫成這個方法的內容。

那么,這個sound方法就是一個抽象方法,對應的,Car就是一個抽象類。Car是不完整的,因此它不能直接生產成一個玩具車 (不能實例化)。


我們需要用Car這個模板來完善我們的奔馳系列玩具

java復制代碼public class CarFactory {
    public static void mAIn(String[] args) {
        // 生產奔馳
        Bnechi BCA = new Bnechi("奔馳A級");
        BCA.run();
        BCA.trumpet();
        // 生產寶馬
        Baoma BMW1 = new Baoma("寶馬1系");
        BMW1.run();
        BMW1.trumpet();
    }
}

語法詳解

抽象類

抽象類使用abstract關鍵字進行聲明,它可以包含抽象方法普通方法

它無法直接創建抽象類的實例,只能通過繼承它的子類來使用。抽象類通常用于定義類的共同特征和行為,而將具體的實現細節留給子類來完成。

示例代碼:

java復制代碼abstract class Car {
    String name;
    public Car(String name){
        this.name = name;
    }
     // 普通方法
    void run(){
        System.out.println(this.name + "跑起來了");
    }
    // 抽象方法,子類需要實現具體的功能,不寫函數體
    abstract void trumpet()
}
  • 聲明了一個String類型的變量name,表示車的名稱。
  • 定義了一個構造方法Car(String name) ,用于初始化車的名稱。
  • 聲明了一個非抽象方法run() ,用于輸出車名并顯示它在跑。
  • 聲明了一個抽象方法trumpet() ,沒有具體實現,需要在子類中重寫。

抽象方法

抽象方法是在抽象類中聲明但沒有具體實現的方法,它使用abstract關鍵字進行聲明。抽象方法沒有方法體,只有方法簽名,子類必須實現這些抽象方法,否則子類也必須聲明為抽象類。

示例代碼:

java復制代碼abstract class Car {
    String name;
    public Car(String name){
        this.name = name;
    }
    // 每個車都可以跑
    void run(){
        System.out.println(this.name + "跑起來了");
    }
    // 每個車的音樂
    abstract void trumpet();
}
// 子類繼承父類
class Bnechi extends Car {
    public Bnechi(String name){
        super(name);
    }
    // 子類完善父類的抽象方法
    public void trumpet(){
        System.out.println("我是奔馳,啦啦啦");
    }
}
// 子類繼承父類
class Baoma extends Car {
    public Baoma(String name){
        super(name);
    }
    // 子類完善父類的抽象方法
    public void trumpet(){
        System.out.println("我是寶馬,啦啦啦");
    }
}

抽象類和抽象方法的使用場景:

  • 當某個類的對象不需要直接創建,而只作為其他具體類的基類模板時,可以將該類聲明為抽象類。
  • 當多個類擁有相似的行為,但在具體實現上有所不同,可以將共同的行為定義在抽象類中,具體實現交給子類。
  • 抽象類和抽象方法可以幫助實現多態性,即通過父類引用指向子類對象,便于統一處理不同子類的對象。

分享到:
標簽:JAVA
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定