实例对象调用静态方法,线程休眠到底休眠的是谁

关于继承和多态的一个问题,在上课的时候,老师曾提到一个问题,如下
在这里插入图片描述
老师给出了原因好像是说什么静态方法是不被继承的。但是我对这个说法其实不太赞同。我还是认为只有构造方法是不被继承的(私有属性、方法等我认为是继承的,但是问题在于能不能访问得到),而且在创建子类型对象时候应该是默认会建一个父类型对象蕴含其中。所以这个题的真正解释应该是在调用静态方法时,底层会识别它所对应的类,将其自动转换成对应的Base.test()和Child.test(),并相应执行对应的代码块。
另写一个证明程序如下,可以试着运行一下。

package ProcessAndThread.thread;

public class ThreadTest6 {
    public static void main(String[] args) {
        //创建线程对象
        Thread t = new MyThread();
        t.setName("t");
        t.start();
        //调用sleep()方法
        try {
            //问题:这行代码会让线程t进入休眠状态吗
            //答案:不会,sleep()S一个静态方法,t在执行的时候会识别它的类,转换成Thread.sleep()
            //而其作用是让当前线程休眠,则代表main线程睡眠
            t.sleep(1000 * 3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("hello world");
    }
}
class MyThread extends Thread {
    @Override
    public void run() {
        for (int i=0;i<100;i++) {
            //是谁在运行,就输出的是谁的name
            Thread currentThread = Thread.currentThread();
            System.out.println(currentThread.getName() + "--->" + i);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值