東西我見過很多,但從來沒有想過要懷疑它...在Java 接口,之間有什麼區別:抽象方法
public void myMethod();
和
public abstract void myMethod();
我瞭解Java類中抽象關鍵字的用途,但它在接口中的用途是什麼(如果有的話)?
東西我見過很多,但從來沒有想過要懷疑它...在Java 接口,之間有什麼區別:抽象方法
public void myMethod();
和
public abstract void myMethod();
我瞭解Java類中抽象關鍵字的用途,但它在接口中的用途是什麼(如果有的話)?
兩個聲明是完全一樣的,所有接口的方法沒有實現(是抽象)因此abstract
關鍵字是多餘的。在我看來,在這種情況下編寫abstract
會增加代碼的冗長度。
所有方法聲明在一個接口都public
和abstract
。沒有一點指出它。
只有void myMethod();
真的需要在這裏。
- 9.4抽象方法聲明 .. .. ..
在接口的身體 每個方法的聲明是隱含 抽象的,所以它的身體始終是 由分號表示,而不是 塊。
在接口的身體 每一個方法的聲明是隱式公開。
+1爲鏈接到官方JLS就此事說。 – mjuarez 2013-02-07 18:17:14
public
和abstract
在這裏是多餘的。我個人更喜歡忽略它們,因爲在我看來,它們在這種情況下都是嘈雜的。
雖然你可以,當然包括他們,我覺得這是完全合理的假設,任何人閱讀你的代碼知道,在一個界面中的所有方法必須是公共的和抽象的 - 這是一個很好理解的特徵。
前面已經說了接口的方法是public
和abstract
。現在discouraged指定他們爲公衆摘要:
爲了與舊版本的Java平臺的兼容性,允許但不鼓勵,作爲一個風格問題,以冗餘指定的接口聲明的方法abstract修飾符。
它是允許的,但強烈建議不要作爲一個風格問題,以冗餘指定的接口方法public修飾符。
而對於完整性interface fields ARE public
static
和final
...
感謝您的有用鏈接,添加「public abstract」是最新的Eclipse重構工具中的默認行爲,這很奇怪。 – seanhodges 2011-03-21 16:44:16
儘管您可以明確聲明,但接口中的所有方法都是隱式公開和抽象的。編譯器只會在你試圖使它們不是抽象的(通過提供body)和私有的情況下才會抱怨。
修飾符public也是多餘的。 – Jcs 2011-03-18 10:45:01
@Jcs是的。 – nan 2011-03-18 10:47:12