Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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_Class_Interface - Fatal编程技术网

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

Java 需要使用另一个子类的对象调用接口的一个子类,java,class,interface,Java,Class,Interface,我有一个界面 public interface I { // an abstract method m1(); } 我有类A类和B类 class A implements I { public void m1() { System.out.println("m1 Method From A"); } } class B implements I { public void m1() { System.out.p

我有一个
界面

public interface I
{
    // an abstract method m1();
}
我有
A类
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");
    }
}
我可以使用为
class A
创建的
object
调用
m1
方法
class B

例如,我创建了
A的
object
,比如
I=newa()

如果我写为
I.m1()
m1
应该调用
类B
的方法

注:
A类
B类
之间没有
超级类或子类
关系

我能否打电话只是个疑问


谢谢…

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

大概是这样的:

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

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

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

大概是这样的:

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

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

您可以使用反射:

接口

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");
    }
} 
Main

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

m1方法从一个

m1方法来自B


您可以使用反射:

接口

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");
    }
} 
Main

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

m1方法从一个

m1方法来自B


谢谢您的回答,但我的疑问是,我是否可以调用
B类的
m1()
,而无需创建
对象
B类
此解决方案正在使用关联。没有关联,您不能从A调用B类的m1()。感谢您的回答,但我的疑问是,我是否可以调用B类的
m1()
,而不创建
对象
B类
此解决方案使用关联。如果没有关联,就不能从A调用类B的m1()。