Java 关于方法同名的不相关类的多态性问题?
不相关类中的方法是否可能存在,同时具有相同的名称/签名,而没有从另一个类或接口继承Java 关于方法同名的不相关类的多态性问题?,java,methods,polymorphism,Java,Methods,Polymorphism,不相关类中的方法是否可能存在,同时具有相同的名称/签名,而没有从另一个类或接口继承 这些也可以被描述为“多态”调用吗 尝试在不继承父类的情况下多态地使用它们有什么缺点 你正在描述一种叫做的情况——类比是“如果它像鸭子一样走路,它像鸭子一样呱呱叫,那么它一定是鸭子”,或者用面向对象的术语来说——如果它有正确的方法,我们可以称之为 然而,Java不是这样工作的 至少不是以任何明显的方式 一个是围绕着这是与反思。假设您有两个类,A和B,它们都有一个doSomething()方法。您可以在运行时获取它们
你正在描述一种叫做的情况——类比是“如果它像鸭子一样走路,它像鸭子一样呱呱叫,那么它一定是鸭子”,或者用面向对象的术语来说——如果它有正确的方法,我们可以称之为 然而,Java不是这样工作的 至少不是以任何明显的方式 一个是围绕着这是与反思。假设您有两个类,
A
和B
,它们都有一个doSomething()
方法。您可以在运行时获取它们的类
对象,使用它们获取相关的方法
对象,然后调用它:
public static void callSomething(Object o) throws Exception {
Class<?> clazz = o.getClass();
Method method = clazz.getMethod("doSomething");
method.invoke(o);
}
publicstaticvoidcallsomething(objecto)抛出异常{
Class clazz=o.getClass();
方法方法=clazz.getMethod(“doSomething”);
方法调用(o);
}
这是可行的,但实际上您已经放弃了Java为您提供的所有好处和保护
除非你有非常好的理由这样做,否则我不会走这条路。你能举个例子说明在Java中没有继承的多态调用是什么意思吗?接口的全部原因是,其他不相关的类可以拥有自己的同名/签名的函数,并且可以调用这些函数。