假设A是抽象类,B是A的子类,C是B的子类。A中有run()方法,B中进行了@Override重写,C也对run()方法进行了重写。
C中重写的run()是重写的B中的run方法还是A中的run方法?
假设A是抽象类,B是A的子类,C是B的子类。A中有run()方法,B中进行了@Override重写,C也对run()方法进行了重写。
C中重写的run()是重写的B中的run方法还是A中的run方法?
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
理论上,C同时重写了A和B的run方法,因为你把C实例赋值给A类型的引用,然后调用A类型引用的run方法,实际调用的是C.run,说明C重写了A的run方法。
同样的,你把C实例赋值给B类型的引用,然后调用B类型引用的run方法,实际调用的是C.run而不是B.run,说明C重写了B的run方法。
这是java的特点,@Override会重写所有父类的相同签名的方法。