Java 关于主题枚举的SCJP问题
从SCJP问题PDF手册中,我得到了这个问题Java 关于主题枚举的SCJP问题,java,scjp,Java,Scjp,从SCJP问题PDF手册中,我得到了这个问题 1. enum Animals { 2. DOG("woof"), CAT("meow"), FISH("burble"); 3. String sound; 4. Animals(String s) { sound = s; } 5. } 6. class TestEnum { 7. static Animals a; 8. public static void main(String[] args) { 9. System.out.println
1. enum Animals {
2. DOG("woof"), CAT("meow"), FISH("burble");
3. String sound;
4. Animals(String s) { sound = s; }
5. }
6. class TestEnum {
7. static Animals a;
8. public static void main(String[] args) {
9. System.out.println(a.DOG.sound + " " + a.FISH.sound);
10. }
11. }
选择是,
A.纬纱
B.多个编译错误
C.由于错误,编译失败
在线2
D.由于错误,编译失败
在线3
E.由于错误,编译失败
在线4
F.由于错误,编译失败
第9行
A是正确答案
有人能解释一下吗
枚举是否可以有构造函数?枚举是一个类。它可以有方法、构造函数、字段。。。和其他班级一样
请注意,当您编写DOG、CAT等时,您正在命名要拥有的此枚举的命名实例。如果它们有类似于此处声音的参数,则必须为相应的构造函数提供参数。Enum是一个类。它可以有方法、构造函数、字段。。。和其他班级一样
请注意,当您编写DOG、CAT等时,您正在命名要拥有的此枚举的命名实例。如果它们有类似于此处声音的参数,则必须为相应的构造函数提供参数。是的,允许使用枚举构造函数,但只有枚举常量可以调用它。无法添加更多枚举实例。就风格而言,构造函数应该是私有的。当然,实例字段通常应该是
private
,并且在enumfinal
中
还需要注意的是,您可以获取静态字段并对实例表达式调用静态方法(即使它们的计算结果为
null
)。是的,允许使用枚举构造函数,但只有枚举常量可以调用它。无法添加更多枚举实例。就风格而言,构造函数应该是私有的。当然,实例字段通常应该是private
,并且在enumfinal
中
还需要注意的是,您可以获取静态字段并对实例表达式调用静态方法(即使它们的计算结果为
null
)。枚举可以有构造函数。对于示例中的所有enum选项(CAT、DOG、FISH),enum实际上就像一个超类
您可以为超类(动物)和单个枚举选项(猫、狗、鱼)定义构造函数。枚举选项构造函数可以重载或重写超类构造函数。枚举可以有构造函数。对于示例中的所有enum选项(CAT、DOG、FISH),enum实际上就像一个超类
您可以为超类(动物)和单个枚举选项(猫、狗、鱼)定义构造函数。枚举选项构造函数可以重载或重写超类构造函数。是的,枚举可以像其他类一样具有构造函数、方法和实例变量。 但是您不能像调用常规类那样自己调用构造函数。 你不能叫一只新狗(“Woooof”)。 编译器将为您调用构造函数
这将很好地编译,但在第9行,我认为编译器会警告您正在以非静态方式访问静态字段。Animal.DOG.sound是“正确的方式”,而不是.DOG.sound。是的,枚举可以像其他类一样具有构造函数、方法和实例变量。 但是您不能像调用常规类那样自己调用构造函数。 你不能叫一只新狗(“Woooof”)。 编译器将为您调用构造函数
这将很好地编译,但在第9行,我认为编译器会警告您正在以非静态方式访问静态字段。Animal.DOG.sound是“正确的方式”,而不是.DOG.sound。我上周参加SCJP考试时遇到了不少关于枚举的问题。我通常不使用它们,也没有真正修改它们,所以不要认为我在这些问题上做得那么好——尽管我仍然通过了考试:)
我知道每一次考试都会随机挑选你的问题,但出于某种原因,Enum上的问题似乎是考试作者最喜欢的…只是想让你知道,我上周参加SCJP考试时遇到了不少关于Enum的问题。我通常不使用它们,也没有真正修改它们,所以不要认为我在这些问题上做得那么好——尽管我仍然通过了考试:)
我知道每次考试都会从一个随机的集合中挑选你的问题,但出于某些原因,关于枚举的问题似乎是考试作者最喜欢的…(对于原始问题,枚举应该是name
Animal
(或者至少是一些单数),因为每个实例代表一种动物,而不是多种动物。)(关于原始问题,枚举应该是nameAnimal
(或者至少是一些单数),因为每个实例代表一种动物,而不是多种动物。)这是正确的答案,因为它是运行时发生的事情。这是正确的答案,因为它是运行时发生的事情。