为什么引用对象仅保存特定类型的引用
本文关键字:引用 类型 保存 对象 为什么 | 更新日期: 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 个类。 Bird
和Human
.
当你声明一个变量时Bird tweety;
你说 tweety 是一只鸟,它必须容纳一个Bird
对象。
如果分配tweety = new Human();
则会收到编译时错误,因为tweety
是Bird
,无法保存Human
对象。