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
    必须是
    Object
    (§4.3.2),否则会引发运行时异常

是的,它会起作用。因为编译器知道,
接口
不是要实例化的。因此,即使您将
接口
引用指定给
对象
,显然该
接口
的任何实现都将来自
对象的层次结构