天天看点

这道Java面试题你真的理解么?好多大神都回答错误!

最简单面试题:

代码:

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方法!