我有以下内容,
public interface SuperbInterface
public class A implements SuperbInterface
public class B extends A
public class C extends B
我想实例化C
,但我似乎得到B
,我做错了什么?
Class classz = Class.forName("C");
SuperbInterface superb = (SuperbInterface)classz.newInstance();
//Here when I debug it seems to be going to B.doWork() methods instead of C.doWork().
superb.doWork();
答案 0 :(得分:5)
我唯一能想到的是你没有在C中覆盖 doWork()。
也许你已经尝试过覆盖但在方法名称或错误的参数中有一些拼写错误?
答案 1 :(得分:1)
假设您使用的是较新版本的Java,请将@Override添加到doWork方法中。如果您错误地覆盖了该方法,编译器会告诉您。
答案 2 :(得分:0)
您确定C
会覆盖doWork
方法吗?基于提出的问题,期望作为扩展B
的一部分,C
不为doWork
提供自己的实现而是依赖于提供了超类B
。
答案 3 :(得分:0)
我看到了结果:
A做的工作
你想要的东西是什么?