2

我按照家庭作业的说明完成了以下代码:

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

4

1 回答 1

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();
}
于 2012-07-18T01:48:21.297 回答