繁体   English   中英

Java中的通用方法和继承

[英]Generic Methods and inheritance in Java

假设C和D类扩展了B类,而B类扩展了A类

我在类E中有一个方法,希望可以使用对象C或对象D中的方法。我知道类A提供了我需要的所有方法。 如何编写允许我将对象C或对象D作为参数传递的方法?

我是否认为我需要参加普通班? 如果是这样,那么有没有人有具体的例子与我所需要的更接近,而似乎只能告诉我如何使用现有的集合类?

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的实例

顺便说一句-在这种情况下,仿制药不是必需的(据我了解)

如果CDA作为其共同祖先,并且A提供了所有需要的方法,那么您的方法应仅将A的实例作为参数。 除非我误解了您的问题,否则您不需要通用方法。

public void doSomething(A input) {
  input.methodInA();
  input.secondMethodInA();
  ...
}

多态将在C或D中运行可能的覆盖代码实现,您无需执行任何操作即可调用该方法。

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
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM