gpt4 book ai didi

java - 当我们创建一个类的对象并使用另一个类引用它时到底会发生什么

转载 作者:行者123 更新时间:2023-12-01 06:03:40 25 4
gpt4 key购买 nike

public class Test
{
public static void main(String args[])
{
A a = new B(); // object of type B
}
}

此处的对象属于 B 类类型,但由 A 类类型的变量引用

正在做A a = new A()A a = new B()两者都只允许我访问 A 类的成员和方法,那为什么我应该用 B 类的构造函数实例化变量 a 呢?

这在内存中是如何准确表示的以及到底发生了什么?

最佳答案

将变量声明为祖先类型允许您动态切换实现。例如...

public static void main(String[] args) {

List<String> stringList;

stringList = new ArrayList<>();

// Stuff Happens and now I need a LinkedList...

stringList = new LinkedList<>();
}

如果我从一开始就将 stringList 声明为 ArrayList,我将无法将其切换为使用 LinkedList。

至于它在内存中的样子。我有限的理解是,编译器将关心类型安全声明的类,但运行时和内存只会关心实例化的类。

关于java - 当我们创建一个类的对象并使用另一个类引用它时到底会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50728312/

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