需要使用另一个子类的对象调用接口的一个子类

时间:2015-03-11 14:06:23

标签: java class interface

我有interface

public interface I
{
    // an abstract method m1();
}

我有class Aclass B

class A implements I
{
    public void m1()
    {
         System.out.println("m1 Method From A");
    }
}

class B implements I
{
    public void m1()
    {
        System.out.println("m1 Method From B");
    }
}

我可以使用m1创建的class B来调用object class A方法吗?

例如,我创建了object A I i = new A();

如果我写i.m1() m1应该调用class B的方法

注意:super class or sub classclass A

之间没有class B关系

我是否能打电话只是怀疑

谢谢......

2 个答案:

答案 0 :(得分:4)

您需要将B类型的依赖关系/关联添加到A。这可以通过在B

中引入A类的类成员来轻松完成

这样的事情:

class A implements I
{
    private B b = new B();

    public void m1()
    {
         System.out.println("m1 Method From A");
         b.m2();
    }
}

答案 1 :(得分:0)

您可以使用反射:

<强>接口

public interface I {
    public void m1();
}

A类

public class A implements I
{
    public void m1()
    {
        System.out.println("m1 method from A");

        try {
            Method sampleMethod = B.class.getMethod("m1" , new Class[] {});
            sampleMethod.invoke(B.class.newInstance()); 
        }
        catch(Exception e) {
        }
    }
}

B类

public class B implements I {
    public void m1() {
        System.out.println("m1 method from B");
    }
} 

主要

public static void main(String[] args) {
     A a = new A();
     a.m1();    
}

OP:

  

m1方法来自A

     

m方法来自B