最简单面试题:
代码:
package cn.itcast.sort;
public class Demo1 {
public static void main(String[] args) {
new Zi();
}
}
class Fu{//父类
Fu(){
show();
}
void show(){
System.out.println("Fu");
}
}
class Zi extends Fu//子类继承父类
{
void show(){
System.out.println("Zi");
}
}
我使用这道题测试了很多人,但是大多数的答案是Fu,但是实际运行结果是Zi.
关于答案:
1.其实这道面试题很简单,主要考察了Java的一个关键字this,main方法中new的对象是Zi,因此this指代的就是Zi类的对象.
2.我们知道当调用子类的时候先走的是父类的构造方法,因此先走的是父类的构造方法,调用show方法,但是这里隐含了一个关键字,其实在Fu类的构造方法中调用show()的时候省略了关键字this,实际上是this.show();通过上述的介绍我们已经知道this代表的是子类的对象,因此这里调用子类的show方法,而不是父类的show方法!