Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于方法同名的不相关类的多态性问题?_Java_Methods_Polymorphism - Fatal编程技术网

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中没有继承的多态调用是什么意思吗?接口的全部原因是,其他不相关的类可以拥有自己的同名/签名的函数,并且可以调用这些函数。