如何在java中调用2个不同类的2个不同方法到我自己的类中?
我需要从两个不同的类调用两个不同的方法到我自己的类,这两个类位于供应商提供的两个不同的.jar文件中 场景如下所示:如何在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()方法,请共享。 注意:我必须扩展可用功能,并应
- abc.jar:public类A{public void m1(){}
- xyz.jar:public类B{public void 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如何“模拟”中间接口基本上支持的多重继承,请参阅本文@我很感激你的回答,但我的要求是定制那些给定的方法(我的坏蛋之前没有提到)。所以根据我的理解,我必须使用继承来覆盖它们。请建议。。。