这是从SCJP 6示例中获取的程序。在这里,我们创建一个具有不同咖啡尺寸的enum
,并声明一个名为ounces
的私有变量,以获取枚举的盎司值部分。
我无法理解被覆盖的getLidCode
方法的使用。一个人将如何访问getLidCode
方法?
package com.chapter1.Declaration;
enum CoffeSize {
BIG(8), HUGE(10), OVERWHELMING(20) {
public String getLidCode() {
return "B";
}
};
CoffeSize(int ounce) {
this.ounce = ounce;
}
private int ounce;
public int getOunce() {
return ounce;
}
public void setOunce(int ounce) {
this.ounce = ounce;
}
public String getLidCode() {
return "A";
}
}
public class Prog7 {
CoffeeSize size;
public static void main(String[] args) {
Prog7 p = new Prog7();
p.size = CoffeeSize.OVERWHELMING;
System.out.println(p.size.getOunces());
//p.size.getLidCode(); ? is this correct way
}
}
最佳答案
如果将其间隔开一些,则更有意义:
enum CoffeSize {
BIG(8),
HUGE(10),
OVERWHELMING(20) {
public String getLidCode() {
return "B";
}
};
// rest of enum code here
}
仅
OVERWHELMING
覆盖getLidCode()
。您可以通过这种方法(使用您的代码)来访问它:
System.out.println(p.size.getLidCode());
这样做的原因:
p.size
是类型CoffeSize
,它具有方法getLidCode()
。它将按预期打印覆盖方法的值。