在多态场景下,以下代码的输出结果是: interface Alpha { default void print() { System.out.print("A"); } } class Beta implements Alpha { void print() { System.out.print("B"); } } class Gamma extends Beta { void print() { super.print(); System.out.print("G"); } } 执行语句:Alpha obj = new Gamma(); obj.print();
答案解析
核心考点:接口默认方法与继承体系的调用优先级
解题思路:实例方法优先级高于接口默认方法,注意super的调用链
选项分析:
-A错误:未考虑Beta类重写后替代了接口默认实现
-B正确:Gamma调用Beta的print,再追加G
-C错误:遗漏Gamma自身的追加输出
-D错误:语法合法,无编译错误
易错点:可能误认为接口默认方法会被调用,实际上实例方法优先
正确答案:B