Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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中调用2个不同类的2个不同方法到我自己的类中?_Java_Jar_Multiple Inheritance - Fatal编程技术网

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

如何在java中调用2个不同类的2个不同方法到我自己的类中?,java,jar,multiple-inheritance,Java,Jar,Multiple Inheritance,我需要从两个不同的类调用两个不同的方法到我自己的类,这两个类位于供应商提供的两个不同的.jar文件中 场景如下所示: abc.jar:public类A{public void m1(){} xyz.jar:public类B{public void m2(){} 我自己的类是MyClass{}。如果我必须在我的类中使用这两个方法,我需要扩展这两个类,但是由于java不支持多重继承,我无法实现它 如果有任何其他方法可以访问我的类中的m1()和m2()方法,请共享。 注意:我必须扩展可用功能,并应

我需要从两个不同的类调用两个不同的方法到我自己的类,这两个类位于供应商提供的两个不同的.jar文件中

场景如下所示:

  • abc.jar:public类A{public void m1(){}
  • xyz.jar:public类B{public void m2(){}
我自己的类是MyClass{}。如果我必须在我的类中使用这两个方法,我需要扩展这两个类,但是由于java不支持多重继承,我无法实现它

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

编辑:问题稍后澄清,OP希望扩展类的功能

一个想法是为两个不同的基类创建两个独立的子类。扩展这些子类中的功能,然后在MyClass中使用composition来使用这些子类及其超类的功能

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();
}
您还可以参考这个问题来详细解释如何在Java中实现多重继承

较早的答覆:

这两个方法都是公共的,因此不需要扩展类来使用这些方法。只需创建这两个类的对象并调用它们各自的方法

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()};

}
虽然在我看来这并不可怕,但无论如何,为什么要覆盖这两种方法呢?如果要这样做,为什么不从零开始创建它们呢?或者你打算使用这些类中的其他方法?无论如何,我都会使用构图


希望它能让你头脑清醒,从这里得到一些东西:)GL

为什么不使用构图模式?有必要使用herency吗?为什么不创建自己的方法并使用新的A.methodA()调用它们呢?请看一下:@Yussef我正在寻找继承,因为我必须向现有方法添加新功能。我想唯一的方法是重写。我同意@iavash,因为你不是在谈论接口。但是,如果您想了解Java如何“模拟”中间接口基本上支持的多重继承,请参阅本文@我很感激你的回答,但我的要求是定制那些给定的方法(我的坏蛋之前没有提到)。所以根据我的理解,我必须使用继承来覆盖它们。请建议。。。