超类引用子类对象?

Jav*_*ser 3 java oop

给我一个我们需要在Java中使用超类引用子类对象的情况.请给我一个实时的例子.

谢谢

Mar*_*des 5

我知道这已经过时了但是这个项目出现在我最近一直在做的项目上(只是一个初级开发人员做出了意想不到的事情 - 没有实际的理由!)我觉得有些答案错过了这一点.

这与正常的多态性无关; 我认为这个问题与代码如下所示:

class A {
    B b; //odd reference here..
}
class B extends A {
}
Run Code Online (Sandbox Code Playgroud)

其中子类用于超类的定义.据一个我可以告诉有自己的编码是这样的没有合法理由,但理由的语言可以让你做到这一点是,它需要一些核心的Java类如Object.

例如,虽然它没有存储对它的引用,但是用于Object创建并返回String其默认toString方法中的对象的代码String是一个子类Object.

有趣的是,虽然它在技术上是允许的,但是让超类在其构造函数中创建子类实例是没有意义的.

例如

class A {
    B b;
    A(){
        b = new B();
    }
}
class B extends A {
}
Run Code Online (Sandbox Code Playgroud)

这会因为它创建一个无限循环而崩溃,因为B的构造函数正在调用A的构造函数,它正在调用B的构造函数等.