由於我們使用「default」關鍵字作爲訪問說明符,並且它可以在switch語句中使用,並且具有完全不同的用途,所以我很好奇,是否有任何其他關鍵字可用於多種用途在java中有兩個相同的關鍵字?
回答
default
既可以在使用一個開關和一個註釋中的默認值(如Bozho指出的)final
表示「不能從派生/覆蓋」和「是隻讀的」,這是兩個不同的 - 但相關的 - 的含義(如由Jon指出)extends
可以既使用指定一個類的父類,可以在通配符和類型變量被用來把一個約束(相關,但不完全一樣)(List<? extends Foo>
)super
可用於指定的東西在目前的超類或通配符來放置約束(List<? super Foo>
)static
指「類,而不是一個實例的一部分」(對於方法,屬性或初始值設定),並作爲static import
class
聲明一個類(class Foo {}
),或指一類文字(Foo.class
)(由ILMTitan作爲回答)- (
for
可以在一個正常的比真的有兩個方面的含義用於循環和「強化」了,但是這更像是超載(如Bozho所說的這麼好聽) )
您不能使用default
作爲訪問說明符,所以我不認爲即便如此。 (編輯:正如Bozho指出的,它可以用於註釋。)
final
意思是「不能從/覆蓋」和「是隻讀」,這是兩種不同的 - 但相關的含義。
default
關鍵字不用作訪問說明符。缺少private
,protected
和public
意味着使用default
。
實施例:
class Test { // default access for class.
int A; // default access for the class member.
}
其中找到不同的使用的Java關鍵字的一些實例是:
final
:甲final
class
不能作爲子類,一個final
方法不能被重寫,和一個final
變量最多可以出現一次,作爲左手錶達式。Super
:用於訪問由它出現的類繼承的類的成員,也用於將構造函數的調用轉發給超類中的構造函數。Static
:用於創建static
初始化塊,還有static
成員和static
導入。for
:用於傳統的for
循環和更新的Java 1.5enhanced for
循環。
這是所有其他答案的好聚合 – 2010-03-08 15:57:02
如果你認爲超級有兩個目的,那麼你應該考慮'this'至少有兩個目的。 – Yishai 2010-03-08 17:27:07
在訪問修飾符的情況下的「默認」不是一個關鍵字 - 你不寫:
default void doSomething()
但是,指定註釋的屬性的默認值時 - 它是。
switch (a) {
default: something();
}
和
public @interface MyAnnotation {
boolean bool() default true;
}
,連同final
由喬恩斯基特指出,似乎面面俱到。也許,除了「過載」 for
關鍵字:
for (initializer; condition; step)
和for (Type element : collection)
我給看看java keywords但似乎關鍵字是唯一的..你可以檢查自己。
順便說一句default
不能用作訪問說明符,它在沒有指定任何人時被繼承。
的static
關鍵字關聯的方法和字段與類的而不是類的實例,但它也可以用來表示靜態初始化部分爲:
public class MyClass
{
private static int a;
static
{
a = 1;
}
public static void doSomethingCool()
{
...
}
}
帕斯卡爾的評論讓我想起了靜態進口:
import static MyClass.doSomethingCool;
public class MyOtherClass
{
public void foo()
{
// Use the static method from MyClass
doSomethingCool();
}
}
Plus靜態導入(http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html) – 2010-03-08 15:52:47
@帕斯卡爾ooo,謝謝,我剛剛瞭解到這些! – 2010-03-08 15:53:27
關鍵字final
可能意味着不同的事情。
- 修改
classes
意味着該類不能被子類化。 - 修改
method
時,表示該方法不能被覆蓋。 - 修改
variable
時,表示該變量不能指向任何其他變量。
我們真的使用default
作爲訪問說明符嗎?沒有說明符是「默認」。但是你不用那種方式使用關鍵字。
最終具有不同的用途:
-
在一個變量聲明
- 它意味着變量不能被改變。
- 在方法簽名中,它表示方法不能被覆蓋
- 在參數列表中,它表示變量不能在方法中被更改。
在參數列表中似乎與局部變量聲明相同。 – Yishai 2010-03-08 17:29:44
「extends」關鍵字可以用於單一繼承(Java中的「實現」或「純抽象類」又稱「接口繼承」)。
「extends」關鍵字也可用於多個(接口)繼承。因此,一直認爲Java不支持多重繼承的人將很難爭辯說,在這兩種情況下,「擴展」完全是一回事。
現在我在另一個陣營:我認爲多接口繼承是多繼承,實現繼承只是一個OOP細節(在OOA/OOD級別不存在),因此我認爲「伸出」真的做得兩種情況下,同樣的事情,並且因此我的回答沒有回答這個問題:)
但它是一個有趣的關鍵詞仍然:)
其他人還沒有提到的東西:類關鍵字有兩個不同的用途。
聲明一個類:
class Test{};
和指示類文本:
Class<Test> testClass = Test.class;
你可以把下面的東西
- 默認
- 最終
- 個超
- 「:」在不同的地方使用(結腸癌),其在不同的地方
由於所有其他的答案都表示不同的含義,還有取決於服務器的多種用途的關鍵字上下文。我只是想補充一點,這是有原因的:強烈厭惡添加關鍵字,因爲這些添加會破壞現有的代碼,所以當添加新功能時,如果現有的關鍵字合理使用,比如超級和擴展對於泛型和默認的註釋,或者它們只是在增強for循環中使用的冒號中跳過。
所以我的觀點是,隨着語言的不斷髮展,現有關鍵詞的使用更多,而不是引入新的關鍵詞。
順便提一下,Java中沒有訪問說明符。 JLS中的術語是「訪問修飾符」。
- 1. 相同的關鍵字兩個廣告組不同的設備
- 2. 有兩個關鍵字
- 3. 在Java中比較兩個具有相同值的字符
- 4. 兩個相連的表中有相同的記錄具有相同的外鍵
- 5. Java中是否有任何關鍵字與C#中的'AS'關鍵字相似?
- 6. 從兩個相關表中的鍵中更改一個字段
- 7. 在Python中使用相同的鍵合併兩個字典
- 8. PHP MYSQL在多個表中搜索相同的關鍵字
- 9. 合併具有相同數字鍵的兩個PHP數組
- 10. java中的同步關鍵字
- 11. 在兩個不同的相關表中獲得兩個字段的總和
- 12. Postgres的:兩個外鍵,以相同的主鍵字段
- 13. 具有相同DataTemplate關鍵字的多個ResourceDictionary?
- 14. 在表中兩次相同的外鍵
- 15. Python中的'is'關鍵字與JS中的===關鍵字相同嗎?
- 16. 的Python:用相同的關鍵字
- 17. 加入兩個表具有一個共同的關鍵在MySQL
- 18. javascript的'this'關鍵字與java的'this'關鍵字有什麼不同?
- 19. 這個關鍵字在Java和PHP中
- 20. throw關鍵字在Java中
- 21. MySql,在BOOLEAN模式中有兩個關鍵字的搜索列
- 22. python中具有相同鍵的字典
- 23. 具有相同鍵和不同值的兩個JsonObject的合併
- 24. 兩個鍵是相同的哈希映射在寫「現有的?
- 25. 在兩個不同的表的內容DISTINCT關鍵字
- 26. 閱讀兩個關鍵字
- 27. 關於在不同jar中存在兩個相同的名字類?
- 28. 當兩個字段相同時在Java中解析JSON?
- 29. 導軌模型 - 兩個表具有相同的主鍵和外鍵字段
- 30. 如何調用與Scala關鍵字相同的Java方法?
您不能使用'默認'作爲訪問說明符。您根本不使用說明符來獲取默認訪問權限。 – 2010-03-08 15:38:07
Dupe of http://stackoverflow.com/questions/2402468/same-keyword-for-two-purposes-in-java – 2010-03-08 15:48:09
這是原創 - 兩個額外的模仿被創建。 – 2010-03-08 15:48:32