如何在 java 中对我自己的 class 调用 2 个不同 class 的 2 个不同方法?

How to invoke 2 different methods of 2 different classes to my own class in java?

我需要从两个不同的 classes 调用两个不同的方法到我自己的 class 并且这两个 classes 在两个不同的 .jar 文件中供应商。

场景如下:

我自己的 class 是 MyClass{}。如果我必须在我的 class 中使用这两种方法,我需要扩展两个 classes,但由于 java 不支持多重继承,我无法实现它。

如果有任何其他方法可以访问我的 class 中的 m1() 和 m2() 方法,请分享。 注意:我必须扩展可用的功能,并且应该根据我的要求自定义方法。

编辑:问题后来得到澄清,OP 想扩展 类 的功能。

一个想法是为两个不同的基础 类 创建两个单独的子 类。扩展这些 sub-类 中的功能,然后在您的 MyClass 中使用组合来使用这些 sub-类 及其 super-类.

的功能
public class SubA extends A {
    @Override
    public void m1() {
        // add extra functionalities
        super.m1(); // invoke existing functionalities
    }
}

public class SubB extends B {
    @Override
    public void m2() {
        // add extra functionalities
        super.m2(); // invoke existing functionalities
    }
}

public class MyClass {
    SubA a = new SubA();
    SubB b = new SubB();
    a.m1();
    b.m2();
}

你也可以参考这个问题How do Java Interfaces simulate multiple inheritance?详细解释如何在Java中实现多重继承。

较早的回答:

这两种方法都是 public,因此您无需扩展 类 即可使用这些方法。只需创建这两个 类 的对象并调用它们各自的方法。

A a = new A();
a.m1();

B b = new B();
b.m2();

也许我会这样做,

class A{
  public void m1{};
}

class B{
  public void m2{};
}

class OneOverrideA extends A{
    @Override
    public void m1{};
}

class OneOverrideB extends B{
    @Override
    public void m2{};
}

class FatherClass extends OneOverrideA{

  //well you have your class method m1 here but we cannot extend more than two class

  public void m2{new OneOverrideB().m2()};

}

虽然在我看来这不是很棒,但无论如何你为什么要重写这两个方法?如果您要这样做,为什么不从零开始创建它们呢?还是您打算使用那些 class 中的其他方法? nvm 无论如何我都会使用合成。

希望它能让你耳目一新,从这里有所收获:) GL