java - 父类(super class)引用子类对象?

标签 java oop

给我一​​个我们需要在 Java 中使用父类(super class)引用到子类对象的情况。请给我一个实时示例。

谢谢

最佳答案

我知道这已经过时了,但它出现在我最近从事的一个项目中(只是一个初级开发人员做了一些意想不到的事情 - 没有真正的原因!)而且我认为一些答案遗漏了点..

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

class A {
    B b; //odd reference here..
}
class B extends A {
}

父类(super class)定义中使用子类的地方。据我所知,没有正当理由自己编写这样的代码,但是该语言允许您这样做的原因是某些核心 Java 类需要它,例如Object .

例如,虽然它不存储对它的引用,但 Object 的代码创建并返回一个 String 对象,它是默认的 toString 方法,然而,StringObject 的子类。

有趣的是,尽管技术上允许,但让父类(super class)在其构造函数中创建子类实例是没有意义的。

例如

class A {
    B b;
    A(){
        b = new B();
    }
}
class B extends A {
}

由于 B 的构造函数正在调用 A 的构造函数,而 A 的构造函数正在调用 B 的构造函数等,因此它会创建一个无限循环,这将导致崩溃。

关于java - 父类(super class)引用子类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535550/

相关文章:

java - 为 JPanel 使用 addMouseListener() 和 paintComponent()

java - 字符串和新字符串有什么区别?

php - 我应该将验证代码放在域模型中还是将其保留在外部?

java - Android ACTION_MOVE图像设置图像滚动范围超出其父级

javax.net.ssl.SSLProtocolException : Handshake message sequence violation, 2

java - 为什么这个同步方法没有按预期工作?

java : get object name from scanner input

r - 在控制台与 R markdown 单元中运行时调度的不同打印方法?

java - Java 中的对象内的对象

java - 带有抽象类的 RMI/事件监听器?