gpt4 book ai didi

java - 将 ObjectS 实例化为 Object 如何工作?这里发生了什么?

转载 作者:行者123 更新时间:2023-11-29 05:37:07 26 4
gpt4 key购买 nike

我是 java 的新手,所以这个问题对某些人来说似乎有一个明显的答案,但这给我带来了一些麻烦。

如果我有

ClassAClassB

B 类扩展了 A 类

这段代码发生了什么?

public class ClassB extends ClassA{

public void foo(){
ClassA CA = new ClassB();

}

}

从这里我可以通过 CAClassA 调用方法 <-- 这部分很有意义..但是我迷路了..

为什么我会这样做,重点是什么,实际发生了什么。

谢谢。

最佳答案

Why I would ever do this and what the point is

你想要这样做的通常情况是创建对象的代码和使用对象的代码不在同一个方法/类/模块中,但需要稍微解耦。

通过多态/继承,您可以为类(在您的情况下为 ClassA)的用户定义一个接口(interface),并能够在不同的实现(例如 ClassB)之间切换在你的情况下)而不需要调用代码知道这一点。

一个典型的例子是对集合做一些事情的方法。 Collection是一个接口(interface),有很多种不同的实现。调用代码可以对集合执行某些操作(例如遍历元素)而无需知道它是 ArrayList 还是 HashSet。

and what actually happens.

发生的事情是,运行时系统似乎您正在调用方法的对象实例是 ClassB 的实例,并且它将代码分派(dispatch)到正确的位置。这是在调用代码不需要知道它的情况下完成的。对于调用者而言,重要的是它希望拥有的接口(interface) (ClassA) 中定义的所有方法都已实现(Java 编译器会确保这一点)。

关于java - 将 ObjectS 实例化为 Object 如何工作?这里发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19088666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com