为什么引用对象仅保存特定类型的引用

本文关键字:引用 类型 保存 对象 为什么 | 更新日期: 2023-09-27 18:28:51

当我们在堆上分配一个对象并使用"new"关键字在引用对象中存储其引用时,如下所示

Class referenceObject = new Class();

一切都很好

但是为什么我们的"refernceObject"不能保留对另一种类型的引用,例如:

referenceObject = new AnotherClass();

因为引用是指向内存位置的内存地址。

我的意思是,如果我有一个整数类型,我可以分配任何整数值(请避免大小(让我们说 1 到 10,即

 int i=1;
 i=2;
 ...
 i=10;

这可以工作,因为我们可以说我们分配的类型与此示例的 int 相同

让我感到困惑的是为什么参考文献不一样.

更多示例

我认为它就像: 我们可以将任何值作为 Set(整数( 元素分配给 'i', 但我们不能将任何作为 Set(References( 元素的值分配给 'objectReference'

如果是这样,原因是什么?

欢迎和欣赏任何建议/帮助

致反对票

者:请评论您投反对票的原因,还是您无法回答这个问题

为什么引用对象仅保存特定类型的引用

Java是一种强类型语言。因此,当你声明一个 SomeClass 类型的变量时,它只能引用 SomeClass 的实例或 SomeClass 的子类。基于变量具有特定类型的事实,编译器允许您仅调用为该类型(或该类型的超类(声明的方法。

假设您有 2 个类。 BirdHuman .

当你声明一个变量时Bird tweety;你说 tweety 是一只鸟,它必须容纳一个Bird对象。

如果分配tweety = new Human();则会收到编译时错误,因为tweetyBird,无法保存Human对象。