3 回答

TA貢獻2080條經驗 獲得超4個贊
語言設計不佳。直接調用靜態(tài)抽象方法比僅使用該抽象方法創(chuàng)建實例會更有效。當使用抽象類作為枚舉無法擴展的變通方法時尤其如此,這是另一個糟糕的設計示例。希望他們在下一個版本中解決這些限制。

TA貢獻1802條經驗 獲得超4個贊
abstract
方法的注釋表明該方法必須在子類中重寫。
在Java中,static
子類不能覆蓋成員(方法或字段)(在其他面向對象的語言中不一定如此,請參閱SmallTalk。)static
成員可能被隱藏,但這與被覆蓋的根本不同。
由于靜態(tài)成員無法在子類中重寫,abstract
因此無法將注釋應用于它們。
另外 - 其他語言確實支持靜態(tài)繼承,就像實例繼承一樣。從語法的角度來看,這些語言通常需要將類名包含在語句中。例如,在Java中,假設您在ClassA中編寫代碼,這些是等效語句(如果methodA()是靜態(tài)方法,并且沒有具有相同簽名的實例方法):
ClassA.methodA();
和
methodA();
在SmallTalk中,類名不是可選的,因此語法是(請注意,SmallTalk不使用。來分隔“主題”和“動詞”,而是將其用作statemend終結符):
ClassA methodA.
由于始終需要類名,因此始終可以通過遍歷類層次結構來確定方法的正確“版本”。對于它的價值,我偶爾會錯過static
繼承,并且當我第一次開始使用Java時,由于缺乏靜態(tài)繼承而被咬了。另外,SmallTalk是鴨子類型(因此不支持逐個程序。)因此,它沒有abstract
類成員的修飾符。
添加回答
舉報