关于java:子类类型变量可以引用超类对象吗?

Can a subclass type variable refer to a superclass object?

在Java的类层次结构中,可以以这样的方式初始化对象吗?

1
subclass object = new superclass();

这假设子类和超类都有适当的构造函数,可以编译,等等。这种类型的对象构造是可能的吗?


不,只有另一条路。当您有一个类的对象时,您可以通过引用同一个类或父类来引用它,而不是相反。这可能与Java无关。否则就没有意义了。假设你有

1
2
3
4
5
6
7
class SuperClass {
    public void method1() {};
}

class SubClass {
    public void method2() {};
}

如果你这样做了

1
  SubClass object = new SuperClass();

然后

1
  object.method2();

从理论上讲,它应该编译,因为引用的类型是子类,但是对象的类型是超类,所以它不会有这样的方法。