Java 抽象類 abstract關鍵字


抽象類前使用abstract關鍵字修飾,則該類為抽象類

抽象的方法是不完全的,它只是一個方法簽名而完全沒有方法體

抽象的方法沒有花括號

繼承抽象類的子類必須覆蓋父類的抽象函數(即:子類繼承抽象類以后,抽象類里面所有的抽象函數都必須要被子類所實現),否則這個類自己就成為抽象類

 

應用:

  1. 在某種情況下,某個父類只知道子類應該包含什么方法,但無法准確地知道子類如何實現這些方法
  2. 從多個具有相同特征的類中抽象出一個抽象類,以這個抽象類作為子類的模板,從而避免了子類設計的隨意性

目的/作用:不關注子類的實現,但會約束子類,必須有哪類特征     /限制規定子類必須實現某種方法,但不關注實現細節

使用規則:

  1. abstract定義抽象類
  2. abstract定義抽象方法,只聲明,不需要實現
  3. 包含抽象方法的類就是抽象類  (即:如果自身聲明了一個抽象方法,這個類必須是抽象類)
  4. 抽象類中可以包含普通方法,也可以沒有抽象方法
  5. 抽象類不能直接創建,定義一個引用變量指向一個子類的對象

例:

abstract class Telphone{    //此父類只是用來約束子類,所以可以定義成抽象類

public abstract void call();    //在抽象類里若想要約束子類,就可定義為抽象方法       抽象方法沒有方法體以分號結束

public abstract void message();

}

class Cellphone extends Telphone{

public void call(){        //實現抽象類里要求的方法call

System.out.println("通過鍵盤來打電話");

}

public void message(){    //實現抽象類里要求的方法message

System.out.println("通過鍵盤來發短信");

}

}

class Smartphone extends Telphone{

public void call(){

System.out.println("通過語音來打電話");

}

public void message(){

System.out.println("通過語音來發短信");

}

}

class Ex17{

public static void main(String[] args){

Telphone tel1=new Cellphone();    //抽象類的父類引用指向一個子類對象,先創建一個普通的電話的對象

tel1.call();    //通過引用就可以打電話

tel1.message();  //通過引用就可以發短信

Telphone tel2=new Smartphone();  //通過父類的引用指向智能手機的對象

tel2.call();

tel2.message();

}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM