我按照家庭作业的说明完成了以下代码:
public enum AccountType {
Checking {
@Override
String acctType() { return "Checking Account"; }
},
Savings {
@Override
String acctType() { return "Saving Account"; }
},
CreditCard {
@Override
String acctType() { return "Credit Card Account"; }
};
abstract String acctType();
}
但是,最初,我尝试执行:public abstract String acctType();
并在每个重写方法上收到以下错误:
stringValue() in cannot override stringValue() in AccountType;
attempting to assign weaker access privileges;
was public
所以我的问题是抽象方法上的public
修饰符是怎么回事?枚举本身被声明为公共类,所以当应该看起来像public
时,我不明白分配较弱的访问权限。< / p>
答案 0 :(得分:3)
错误消息表示如果您使用特定的可见性定义抽象方法,则必须定义实现以至少具有该可见性。
在这种特定情况下,这意味着如果抽象方法是公开的,那么实现也必须如此。
public enum AccountType {
Checking {
@Override
public String acctType() { return "Checking Account"; }
},
Savings {
@Override
public String acctType() { return "Saving Account"; }
},
CreditCard {
@Override
public String acctType() { return "Credit Card Account"; }
};
public abstract String acctType();
}