第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么靜態(tài)方法在Java中不能是抽象的

為什么靜態(tài)方法在Java中不能是抽象的

人到中年有點甜 2019-08-09 10:48:54
為什么靜態(tài)方法在Java中不能是抽象的問題是在Java中為什么我不能定義一個抽象的靜態(tài)方法?例如abstract class foo {    abstract void bar( ); // <-- this is ok    abstract static void bar2(); //<-- this isn't why?}
查看完整描述

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

因為“abstract”意味著:“實現(xiàn)沒有功能”,“靜態(tài)”意味著:“即使你沒有對象實例也有功能”。這是一個合乎邏輯的矛盾。


查看完整回答
反對 回復 2019-08-09
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

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


查看完整回答
反對 回復 2019-08-09
?
慕虎7371278

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類成員的修飾符。


查看完整回答
反對 回復 2019-08-09
  • 3 回答
  • 0 關注
  • 885 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號