由于我们使用“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. 两个相连的表中有相同的记录具有相同的外键
- 4. Java中是否有任何关键字与C#中的'AS'关键字相似?
- 5. 在Python中使用相同的键合并两个字典
- 6. PHP MYSQL在多个表中搜索相同的关键字
- 7. 合并具有相同数字键的两个PHP数组
- 8. 合并具有相同键的两个字典列表:
- 9. java中的同步关键字
- 10. 在两个不同的相关表中获得两个字段的总和
- 11. 的Python:用相同的关键字
- 12. 加入两个表具有一个共同的关键在MySQL
- 13. 这个关键字在Java和PHP中
- 14. 具有相同键和不同值的两个JsonObject的合并
- 15. MySql,在BOOLEAN模式中有两个关键字的搜索列
- 16. 两个键是相同的哈希映射在写“现有的?
- 17. python中具有相同键的字典
- 18. 在两个不同的表的内容DISTINCT关键字
- 19. 当两个字段相同时在Java中解析JSON?
- 20. 关于在不同jar中存在两个相同的名字类?
- 21. 阅读两个关键字
- 22. 导轨模型 - 两个表具有相同的主键和外键字段
- 23. 引用相同列的两个外键
- 24. 确定是否有两个相邻字符相同的字符
- 25. 了解Java中的这个关键字
- 26. 两个字符串中有多少个字符相同
- 27. 一对一映射关系在这两个表中的相同主键
- 28. 在ANTLR语法中使用不同的关键字关键字
- 29. 如何将两个不相关的外键关联回同一个实体
- 30. 两个相同的字不同
您不能使用'默认'作为访问说明符。您根本不使用说明符来获取默认访问权限。 – 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