語法定義
- 抽象類前面用 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打電話
智能機:可以通過語音發短信