抽象類為什么不能實例化?
Calendar c = new Calendar(); 出現 new Calendar()就會執行實例化一個對象了。所以如果是抽象類就不能這樣new的。要new 它沒有abstract的子類。 抽象類是指不允許被實例化的類;抽象方法是沒有方法體的方法。
1、抽象類可以不包括抽象方法,它反正不會去實例化,抽象類不能被實例化,也就是不能用new關鍵字去產生對象,抽象方法只需聲明,而不需實現,抽象類的子類必須覆蓋所有的抽象方法后才能被實例化,否則這個子類還是個抽象類,里面的方法是不是抽象的沒有本質影響。
2、但是含有抽象方法的類絕不能被實例化,否則執行這個方法的時候,怎么辦?
3、如果子類是非抽象的,那么它就必須實現父類中的抽象方法;否則,它繼承來的抽象方法仍然沒有方法體,也是個抽象方法,此時就與“含有抽象方法的類必須是抽象類”相矛盾了。 抽象類與接口緊密相關,它們不能實例化,并且常常部分實現或根本不實現。抽象類和接口之間的一個主要差別是:類可以實現無限個接口,但僅能從一個抽象(或任何其他類型)類繼承。從抽象類派生的類仍可實現接口。可以在創建組件時使用抽象類,因為它們使您得以在某些方法中指定不變級功能,但直到需要該類的特定實現之后才實現其他方法。抽象類也制定版本,因為如果在派生類中需要附加功能,則可以將其添加到基類而不中斷代碼。 在實現抽象類時,必須實現該類中的每一個抽象方法,而每個已實現的方法必須和抽象類中指定的方法一樣,接收相同數目和類型的參數,具有同樣的返回值。
下一篇明德揚這三家培訓怎么樣