程序设计 选择题 较难 ★ 精品

重写与重载的区别 — 程序设计选择题

Java 程序设计(大学通用) 继承与多态 AI 三重审校通过

题目
设类 A 中定义了 void f(A x){ 输出"A-f(A)" },类 B extends A 中定义了 void f(B x){ 输出"B-f(B)" } 和 void f(A x){ 输出"B-f(A)" }。现执行 A obj = new B(); obj.f(new B()); 关于该调用的绑定方式与输出结果,下列判断正确的是: A. 参数为 B 类型,故编译期静态绑定到 B.f(B),输出 B-f(B) B. obj 编译类型为 A,编译期绑定到 A.f(A),运行期因 B.f(A) 与之构成重写而动态绑定,输出 B-f(A) C. 三个方法互为重载,编译器无法确定调用哪个,产生编译错误 D. 编译期按 obj 的运行类型 B 绑定到 B.f(B),输出 B-f(B)