让我们说C和D类扩展了B类,扩展了A类
我在E类中有一个方法,我希望能够使用对象C或对象D.我知道A类提供了我需要的所有方法。我怎样才能编写一个让我传递对象C或对象D作为参数的方法?
我认为我需要制作一个通用课吗?如果有的话,是否有人有更接近我需要的具体例子this,它似乎只告诉我如何使用现有的集合类?
答案 0 :(得分:6)
class A {
public String hello(){return "hello";}
}
class B extends A{}
class C extends B{}
class D extends B{}
方法hello
在所有子类B,C和D中都可用。
所以在E中,做一些类似的事情:
private void test() {
System.out.println(hello(new A()));
System.out.println(hello(new B()));
System.out.println(hello(new C()));
System.out.println(hello(new D()));
}
public String hello(A a) {
return a.hello();
}
您可以传递A,B,C或D
的实例BTW - 在这种情况下不需要泛型(据我所知)
答案 1 :(得分:2)
如果C
和D
有A
作为共同的祖先,而A
提供了所有需要的方法,那么您的方法应该只采用A
的实例作为参数。除非我误解了你的问题,否则你不需要通用的方法。
答案 2 :(得分:1)
public void doSomething(A input) {
input.methodInA();
input.secondMethodInA();
...
}
多态性将在C或D中运行可能被覆盖的代码实现,除了调用该方法之外,您不需要执行任何操作。
答案 3 :(得分:0)
class A {
}
class B extends A {
}
class C extends B {
}
class D extends B {
}
class E {
public void test ( A a ) {
// c or d will work fine here
}
}