【90%正規** 】在以後所有進行的專案開發之中,絕對不要出現乙個類去繼承乙個已經實現好的類,而只能夠繼承抽象類和介面。
物件多型性的核心本質在於方法的覆寫上,那麼如果說現在子類沒有去進行指定方法的覆寫,這樣的操作就有些不合要求的。所以如果對子類的方法進行一些強制的要求就必須採用抽象類來解決。
抽象類的基本概念
抽象類只是在普通類的基礎上擴充了一些抽象方法而已。
所謂的抽象方法指的只是宣告而未實現(沒有方法體)的方法
所有的抽象方法要求使用abstract關鍵字來進行定義,
並且抽象方法所在的類也一定要使用abstract定義類表示抽象類
範例:定義乙個抽象類
abstract class a
// {}為方法體,所有的抽象方法上是不包含有方法體的
public abstract void fun();//抽象方法
}public class testdemo
現在可以發現抽象類就是比普通類多了一些抽象方法而已
抽象類中包含有抽象方法,而抽象方法與普通方法最大的區別在於其沒有方法體,
即:不知道具體的實現,而如果現在產生了例項化物件,則意味著可以呼叫類中的所有操作。
對於抽象類使用的原則:
·所有的抽象類必須要有子類;
·抽象類的子類(不是抽象類)必須覆寫抽象類中的全部抽象方法
|-方法覆寫一定要考慮到許可權問題:抽象方法可以使用任意許可權,要求許可權盡量都用public
·抽象類的物件可以用過物件多型性,利用子類為其實例化
範例:使用抽象類
abstract class a
//{}為方法體,所有的抽象方法上是不包含有方法體的
public abstract void fun();//抽象方法
}//乙個子類只能夠利用extends來繼承抽象類,所以依然存在有單繼承侷限
class b extends a
}public class testdemo
}
從正常的開發角度來講,以上的操作沒有任何問題,而且也是一種使用最多的形式,但是對於抽象類必須有一點說明,你以後有可能見到如下的一種形式。
abstract class a
public static a getinstance()
}returnnew b(); // 如果不太懂繼承就記住這個套路,b()可能是返回b類中的方法吧
public abstract void fun();//抽象方法
}public class testdemo
}
此類模式屬於非常模式,但是對於一些封裝性是由好處的。把具體的子類封裝在一起了
但並不是開發首選。
應為有抽象類產生子類,子類覆寫全部抽象方法
抽象類的基本概念
抽象類的基本概念 包含乙個抽象方法的類就是抽象類。抽象方法 只宣告而未實現的方法稱為抽象方法,抽象方法必須使用abstract關鍵字宣告。1 包含乙個抽象方法的類必須是抽象類。2 抽象類和抽象方法都要使用abstract關鍵字宣告。3 抽象方法只宣告不實現。4 抽象類必須被子繼承,子類 如果不是抽象...
java 抽象類和介面1 基本概念
抽象類是用來捕捉子類的通用特性的 它不能被例項化,只能被用作子類的超類。抽象類是被用來建立繼承層級裡子類的模板 介面是抽象方法的集合。如果乙個類實現了某個介面,那麼它就繼承了這個介面的抽象方法。這就像契約模式,如果實現了這個介面,那麼就必須確保使用這些方法。介面只是一種形式,介面自身不能做任何事情 ...
抽象類基本語法
include using namespace std 面向抽象類程式設計 面向一套預先定義好的介面程式設計 解耦合 模組的劃分 class figure 抽象類 class circle public figure virtual void getarea virtual void getarea...