Java 具有接口的对象类继承
对象类引用变量可以引用某个接口引用变量所包含的引用。正如我们所知,接口不能扩展任何类。所以对象类的默认继承是否适用于这种情况。显然答案是肯定的,但这背后的逻辑是什么Java 具有接口的对象类继承,java,Java,对象类引用变量可以引用某个接口引用变量所包含的引用。正如我们所知,接口不能扩展任何类。所以对象类的默认继承是否适用于这种情况。显然答案是肯定的,但这背后的逻辑是什么 public interface ToTest { } public class ToTestImpl implements ToTest{ } public class ToTestClass { public static void main(String arg
public interface ToTest {
}
public class ToTestImpl implements ToTest{
}
public class ToTestClass {
public static void main(String args[]){
ToTest test = new ToTestImpl();
Object o = test;
System.out.println(o);
}
}
逻辑是每个Java类都是
对象
的后代,而不管它实现了什么接口。因此,任何引用都可以向上转换到对象
适用于您案例的机制在JLS和中详细说明。细节有点复杂,因为有编译时和运行时组件。有关报价如下:
下面是检查对象的运行时类型R
是否与类型T
兼容的算法
如果R
是一个接口:
- 如果
是类类型,则T
必须是T
(§4.3.2),否则会引发运行时异常Object
是的,它会起作用。因为编译器知道,
接口
不是要实例化的。因此,即使您将接口
引用指定给对象
,显然该接口
的任何实现都将来自对象的层次结构