java为什么不能在接口类型上引用类的方法
为什么我们不能对实现该接口的接口类型调用类方法。。?有什么问题吗
Interface {
void Iaminterfacemethod();
}
Class implements Interface {
public void Iaminterfacemethod(){
System.out.println("I'm class implements Interface");
}
void classmethod() {
System.out.println("I'm class Method");
}
public static void main(String[] args) {
Interface O = new Class();
O.classmethod(); --------->Why Not ?
}
}
如果接口类型可以引用类对象,那么为什么他不能访问类方法呢?因为在最后,这个调用将只对类的对象起作用。。不
# 1 楼答案
这就是继承的原理
这里
O
是接口的引用,因此O
只知道接口中定义的方法您只能引用引用人知道的方法
# 2 楼答案
在编写代码、编译和运行时,会发生两件事
当你写作的时候
所以,基本上,编译器将检查
classmethod
的O
引用是否存在,这是您的<Interface>
现在,假设
<Interface>
已经由多个类实现,并且classmethod
方法被不同的行为覆盖。然后,根据<Class>
(实现<Interface>
)的对象,该方法将在运行时动态绑定# 3 楼答案
在子类或实现类中声明的方法不是超类/接口的一部分,因此不能调用在具有超类/接口引用类型的子类中声明的方法。编译器检查引用变量
o
是否有方法classmethod()
,它没有