Java的抽象類

  • 語法定義

    • 抽象類前面用 abstract 關鍵字來修飾
  • 應用場景

    • 在某些情況下,父類只知道子類應該包含怎樣的方法,但無法準確知道這些子類如何實現這些方法;
    • 從多個具有相同特徵的類中抽象出一個類,以這個抽象類作爲子類的模板,從而避免子類設計的隨意性;
  • 作用(目的)

    • 限制或者規定子類必須實現某些方法,但不關注實現的細節;
    • 通俗的理解就是,抽象類不關注子類的實現,但是要約束子類必須有哪些特徵;
  • 使用規則

    • abstract 關鍵字定義抽象類
    • abstract 關鍵字定義的抽象方法只需要聲明,不需要實現
    • 包含抽嫌方法的類是抽象類
    • 抽象類中可以包含普通的方法,也可以沒有抽象方法
    • 抽象類不能直接創建,可以定義引用變量指向子類的對象
  • 代碼示例

    • 創建一個手機抽象類:
/**
 * Created by xiezhongtian on 2017/8/24.
 */
//定義抽象類(abstract 關鍵字)
public abstract class Telphone {

    //定義抽象方法(abstract 關鍵字)
    public abstract void call();
    public abstract void sendMessage();
}

    • 創建一個功能機類並繼承手機抽象類
/**
 * Created by xiezhongtian on 2017/8/24.
 */
public class CellPhone extends Telphone {
    @Override
    public void call() {
        System.out.println("功能機:只能用蜂窩網絡多打電話");
    }

    @Override
    public void sendMessage() {
        System.out.println("功能機:不能通過語音發短信");
    }
}

    • 創建一個智能機類並繼承手機抽象類

/**
 * Created by xiezhongtian on 2017/8/24.
 */
public class SmartPhone extends Telphone {
    @Override
    public void call() {

        System.out.println("智能機:可以使用種類繁多的APP打電話");
    }

    @Override
    public void sendMessage() {

        System.out.println("智能機:可以通過語音發短信");
    }
}
public class Initial {//初始化類
    public static void main(String[] args) {

        //抽象類 (初始化抽象類)
        Telphone cellPhone = new CellPhone();//創建一個功能機的對象
        cellPhone.call();
        cellPhone.sendMessage();

        Telphone smartPhone = new SmartPhone();//創建一個智能機的對象
        smartPhone.call();
        smartPhone.sendMessage();

    }
}

    • 輸出結果
功能機:只能用蜂窩網絡多打電話
功能機:不能通過語音發短信
智能機:可以使用種類繁多的APP打電話
智能機:可以通過語音發短信
發佈了69 篇原創文章 · 獲贊 23 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章