猿问

Java(或C ++)如何处理接口中定义的方法的调用

我目前正在使用我的编程语言,它将仅具有接口并且没有对象继承。我有一个问题,因为我不知道如何制作vtable,因此可以在继承了许多接口的类中调用适当的方法。


在Java中,您可以这样编写


interface A {

    void a();

}


interface B {

    void b();

}


interface C {

    void c();

}


class Something1 implements A, B{

    ... implementing a() and b() ...

}


class Something2 implements B, C{

    ... implementing b() and c() ...

}


...


B obj = new Something1();

obj.b();


obj = new Something2();

obj.b();

而且,JVM将仅知道对象继承了B接口(如果未优化),从而调用b()方法。


因此,我认为,首先JVM将转到对象的vtable,然后...如何在vtable中找到b()以及必须生成哪种vtable。


PS问题根本不是关于Java的。可能是C ++或PHP的示例,没关系。用Java编写示例更加简单


富国沪深
浏览 99回答 1
1回答
随时随地看视频慕课网APP

相关分类

Java
我要回答