围观某公司的Java面试题,多态方法调用
程序员文章站
2022-06-08 07:57:40
...
违反人类直觉,违反软件开发初衷的Java面试题。
要求写出程序执行结果。
正确答案是
derived value:
10
super value:
10
但我当时写的答案是20, 20。
题目是典型的钻牛角尖。 我干嘛要声明一个子类的变量,然后又把它变成父类,又要调用父类的方法? 从来没见过这么搞的,就算实际中有,也是可读性差、可维护性差的写法,能做出这种题,只能说明是个应试型人才罢了。
public class Super { private int i=10; public void execute(){ System.out.println(i); } public static void main(String[] args) { Derived derived = new Derived(); Super superr = derived; System.out.println("derived value:"); derived.execute(); System.out.println("super value:"); superr.execute(); } } public class Derived extends Super { private int i=20; }
要求写出程序执行结果。
正确答案是
derived value:
10
super value:
10
但我当时写的答案是20, 20。
题目是典型的钻牛角尖。 我干嘛要声明一个子类的变量,然后又把它变成父类,又要调用父类的方法? 从来没见过这么搞的,就算实际中有,也是可读性差、可维护性差的写法,能做出这种题,只能说明是个应试型人才罢了。