JAVA:类中定义的访问方法,但不是由其接口实现的

时间:2017-10-26 23:16:02

标签: java oop

接口:

public interface InterfaceA {
    public void PartOfIinterfaceA();
}

类别:

public class Class_To_Test_Interface_encapsulation implements InterfaceA {

public void MethodM() {

}

@Override
public void PartOfIinterfaceA() {
    // TODO Auto-generated method stub

}

}

主要课程:

public class MainClass {


public static void main(String args[]) {

    InterfaceA Ia = new Class_To_Test_Interface_encapsulation();
     Ia.MethodM();
}
}

它给了我以下错误: 在InterfaceA()类型中未定义方法MethodM() 我很清楚,为什么它给我错误和它的逻辑。 另外,我重新评估了// Use methods declared in implementation that are not defined in interface

但是,我的问题是,我们还有其他任何方式,其中一段代码引用了B的实例 (使用InterfaceA类型)实际上可以访问m?

2 个答案:

答案 0 :(得分:2)

在没有m的对象(InterfaceA)上访问m没有意义(该方法未在接口中定义)。如果您知道InterfaceA的一个子集将定义m,则需要在访问m之前确定该子集中的成员资格:

if (Ia instanceof Class_To_Test_interface_encapsulation) {
  ((Class_To_Test_interface_encapsulation)Ia).MethodM();
}

答案 1 :(得分:-1)

InterfaceA Ia = new Class_To_Test_Interface_encapsulation()。MethodM();

这将跳过编译时错误,并在运行时正确解析并调用方法MethodM()