接口类型变量(超类实现)中子类的对象调用超类方法?

时间:2015-11-13 07:52:58

标签: java inheritance

我有一个接口,一个实现它的超类,以及一个扩展超类的子类。然后我有测试创建子类类型的对象,但将其存储在接口类型的变量中。当我使用在接口中定义的方法,在超类中实现并在子类中重写时,它从超类调用该方法。为什么是这样?我无法更改测试类,但是我是否对子类做错了什么?

public interface SampleInterface<T extends Comparable<T>>{
    void add(T element);
//other methods, etc
}


public class SampleClassA<T extends Comparable<T>> implements SampleInterface<T> {
    public void add(){
        System.out.println("super");
    }
}

@Override
public class SampleClassB<T extends Comparable<T>> extends SampleClassA<T> {
    public void add(){
        System.out.println("sub");
    }
}

然后我想在看起来像这样的测试中使用代码:

private SampleInterface<Integer> test = new SampleClassB<Integer>();
test.add();

它打印“超级”,但我想要“sub”。这也是我的代码的简化版本。

0 个答案:

没有答案