我有三个类,一个超类,一个子类和一个测试类。超类是抽象的,子类扩展了超类,测试类与它们都没有关系。所以
public abstract class SuperClass {...}
public class SubClass extends SuperClass {...}
public class TesterClass {...}
超类和子类都有一个tostring()方法,所以看起来更像
public abstract class SuperClass {
public String toString(){...};
...
}
public class SubClass extends SuperClass {
public String toString(){...};
...
}
public class TesterClass {...}
我需要做的是在tester类中使用超类的tostring()方法。我曾经尝试过将对象从子类强制转换为超类,并在那里使用方法,但最终使用了子类的tostring()方法(在我尝试使用一点反射来查看java认为对象是什么类之后,看起来它仍然认为它是子类(即使在强制转换之后)。我曾考虑过尝试使用反射直接从超类中获取所需的方法,然后使用invoke()调用对象,但这似乎是一个非常混乱的解决方案。
任何帮助都是很大的帮助,哪怕只是给我指出一个我还没听说过的概念。谢谢您!
1条答案
按热度按时间polkgigr1#
在班级内
TesterClass
您可以创建一个扩展抽象的类SuperClass
,然后进行测试toString
属于那个亚类。因为,你没有覆盖toString
当你称它为toString
您将实际测试toString
来自超级阶级。,SuperClass
)或者,您可以在测试方法1)中创建类型为的内部匿名类
SuperClass
; 2) 实现它的抽象方法(即忽略它们,因为它们不会被测试)。3) 测试toString
内部匿名类的:为了一个
SuperClass
看起来是这样的