为什么引用对象仅保存特定类型的引用
why Reference Objects hold the references of a Particular Type only
当我们在堆上分配一个对象并使用"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
对象。
相关文章:
- 强制转换为引用类型
- 自定义引用类型
- Java 中是否有类似于 C++ 中引用类型"&"的内容?
- 为什么我不能在运算符=中使用引用类型?
- 可变参数模板函数参数和引用类型推导
- 隐式可转换参数,但属于引用类型
- 如何告诉自动推断向量<bool>元素的非引用类型
- 为什么"const auto [x, y]"绑定到引用类型时没有按预期运行?
- 引用类型的数据成员提供有关恒常正确性"loophole"
- 为什么引用类型在使用临时对象访问时是左值
- 什么是常量指针常量引用类型的参数?(const X* const & p)
- 在 lambda 中从引用类型捕获的值的类型,不使用通用捕获
- 如果类在 C++ 中具有常量或引用类型的非静态数据成员,为什么编译器不提供默认赋值运算符?
- void*作为通用引用类型是如何工作的
- 强制转换为不相关的引用类型是否违反严格的别名规则?
- C++ 引用类型作为递归函数参数
- EXPECT_CALL具有 unique_ptr 引用类型参数的模拟函数
- 如果使用返回引用的函数初始化"auto"var,为什么它不声明引用类型?
- 为什么模板引用类型不能用作模板类型别名参数?
- 模板默认参数将丢失其引用类型