1.阅读如下代码:
a. 回答输出的是什么内容
b. 为什么?
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Runnable匿名子类的run方法");
}
}) {
@Override
public void run() {
System.out.println("Thread匿名子类的run方法");
}
}.start();
}
a:输出的是:Thread匿名子类的run方法
b:Thread中调用Runnable接口覆写的run方法的方法,被Override了,使得Thread的start方法转而调用Thread匿名内部类(子类)中覆写的run方法,即输出“Thread匿名子类的run方法”
Thread源码:
@Override
public void run() {
if (target != null) {
target.run();
}
}
===========》》》》》》》
被覆写成了
@Override
public void run() {
System.out.println("Thread匿名子类的run方法");
}
就不会去调用Runnable的run了