这被认为是预测正确吗?
Derived d = new Derived(); Base b = d; // Always OK.
解决方法
我想你可能会对上传的内容感到有些困惑. upcast不会禁用派生对象的功能,也不会创建新的Base对象.相反,它只是对您所提升的对象进行更有限的视图.通过基类引用,您只能访问在Base中声明的那些方法,但如果在派生类中重写了这些方法中的任何一个,则通过基类引用调用它们仍将调用派生版本.
至于你什么时候想做这件事,看到人们因为没有特别的原因而被人上调是不常见的.毕竟,这限制了你可以对对象做的事情.但是,正如其他海报所指出的那样,在将对象传递给函数或从函数返回对象时隐式向上转换是很常见的.在这些情况下,upcast允许函数作者接受具有完成工作所需的最弱要求集的参数,或者从表现出某些行为的函数返回对象而不必显示完整类型的宾语.
原文地址:https://www.jb51.cc/csharp/98187.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。