2013-11-24 16 views
2

我知道你不能創建Abstract類的實例,並且Abstract類的子類可以繼承第一個Abstract類的繼承屬性,但是我不明白爲什麼Abstract類需要存在,當你擁有普通的Super類及其類時子類。什麼是抽象類的好處/應用?什麼是抽象類的使用/應用?

+0

面向對象編程的好處是什麼? –

+0

詢問前先嚐試一下有什麼好處? – hexafraction

+0

我已經完成了。看到你幾個視頻管等..只是告訴我什麼是抽象類,但不是與普通類相比的應用程序。 – user3013144

回答

1
abstract class Animal { } 
class Dog extends Animal { } 
class Cat extends Animal { } 

如果可以實例化它,Animal會是什麼?

當超類不打算被實例化時,你應該使用一個abstract類:它作爲擴展類依賴的基礎,但它本身並不意味着什麼。

通過讓Animal類充當DogCat的基類,您可以在其中定義常見行爲,而不必在每個子類中重新定義它。考慮如NameSpeciesFirstSighting這些屬性:這些將在CatDog中使用,那麼爲什麼不把它們放在基類中以避免額外的工作和不一致性問題?

另一方面,你不想創建一個新的Animal:它沒有提到動物的類型。這就是爲什麼你做它abstract

+0

什麼是downvotes? –

+0

只要動物類沒有用處,它根本就沒有權利存在,無論它的摘要與否。 –

+1

動物可以包含某些屬性,如「名稱」,「物種」,「第一次瞄準」等。您是否會在每個子類中重新定義它? –

0

抽象類/接口的主要目的是模擬抽象的問題 - 設計。然後真正的實現將根據抽象行爲。

3

抽象類可防止實例化「不完整」抽象實現。

例如,抽象類可能具有抽象方法而沒有任何實現。實際調用這些方法並不合適。

或者,抽象類可能沒有任何實際的抽象方法 - 但仍可能需要在子類API中添加其他功能,因爲它很有用。

abstract關鍵字用於這兩個原因&防止抽象類被實例化。

相關問題