我正在阅读 JLS 第 9.3.1 节,我遇到了一个有趣的概念,即模棱两可的继承字段。这是来自 JLS 的示例
interface BaseColors {
int RED = 1, GREEN = 2, BLUE = 4;
}
interface RainbowColors extends BaseColors {
int YELLOW = 3, ORANGE = 5, INDIGO = 6, VIOLET = 7;
}
interface PrintColors extends BaseColors {
int YELLOW = 8, CYAN = 16, MAGENTA = 32;
}
interface LotsOfColors extends RainbowColors, PrintColors {
int FUCHSIA = 17, VERMILION = 43, CHARTREUSE = RED+90;
}
它允许继承不明确的字段。但是当我尝试引用该字段并访问它时,它会给出编译时错误。为不明确的字段提供编译时错误。我的问题是,首先为什么编译器在继承模棱两可的字段时没有抱怨。为什么在访问时,它给出了这个问题?如果我们在使用类时也这样做,它允许。为什么不在接口的情况下。我的观点是它不应该只在第一时间允许。澄清这个概念将非常有帮助。