问题标签 [upcasting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 通过表单检索后向上转换类引用
出色地,
假设我有两个模型类:
和一个以 BaseClass 类型为模型的视图。
如果我将 DerivatedClass 传递给视图并通过表单检索信息,它不会再次“可转换”到 DerivatedClass 吗?
问题是,如果我在视图中检索模型的类型 (Model.GetType().FullName),我会(毫无意外地)得到一个 DerivatedClass 类型。
但是当我检查发布的模型时,在我的控制器中,我得到了一个 BaseClass (显然,它不能被铸造!)
控制器:
看法:
我的逻辑错了吗?检索 POST 信息后,无论如何要在控制器内部进行此转换?
java - 使用在实现中声明但未在接口中定义的方法
我有一个由接口定义的类
如何调用另一个方法?
我希望能够在实现中定义一些方法,只是因为在我的生产代码中,Test 接口涵盖了相当广泛的类并且由多个类实现。我使用实现中定义的方法来设置在我的单元测试中 DI 框架未涵盖的依赖项,因此这些方法会随着实现而变化。
java - Java 中的向上转换和两个单独的对象属性
试图理解 Java 中的向上转换。最近观察到的奇怪行为。
例子:
似乎,该向上转换的对象具有两个单独的“i”属性。一个“i”可以直接访问(ai),另一个通过子类的方法访问(a.printI())。
看起来向上转换的对象从超类获取属性,从子类获取方法。
对象怎么可以有两个单独的“i”?!
c++ - 为什么 C 样式转换允许您转换为私有基类?
假设我们有这个代码
main 函数中的 C 风格转换不能正确地用 C++ 转换 ( static_cast
, dynamic_cast
, reinterpret_cast
) 表示。但是首先允许这样做的原因是什么?它不会伤害封装吗?
更新 这不是链接问题的重复,因为这个问题是关于 C++ 中的设计决策。它不问我能用这种语言做什么或不能做什么,它问为什么会做出某些决定。
c++ - 转换和向上转换
我想完全理解转换,即确保我知道函数调用何时会导致隐式转换,以及何时会导致编译错误。我了解到,当且仅当有一种单一的方法可以通过以下列表中的最多两个步骤(按优先级排序)转换变量时才可以进行转换:
我理解的方式(你可以纠正我)是提升是将基元转换为更大的基元类型,例如 short 到 int、float 到 double 等;转换是非提升的基元之间的任何转换,例如 int 到 char 等;用户定义的转换是使用转换构造函数和转换运算符对类进行的转换。现在,我也知道继承意味着和 Is-A 关系,这意味着派生类是基类,因此将派生类发送到期望对基类的引用的函数应该可以工作。结合上面的两个概念,我们应该知道我写的下面的例子应该可以工作:
因为 D 可以从 int 转换为,并且 D 是 C。但是这段代码没有被编译。这是为什么?矛盾如何化解?你能解释一下这件事吗?谢谢!
c++ - 向上转换到超类或接口?
我正在尝试确认我已经在实践中工作的东西背后的理论。完整的设置有点扭曲,因为功能在不同的 dll 之间分割,但我将尝试描述这种情况:
这种向上转换有效,但它需要完全访问 DerivedClass 的定义:
但是,以下内容不起作用:
为了解决这个问题,我实现了一个接口:
现在下面的代码确实有效:
我有一些模糊的记忆,有人告诉我强制转换为完全虚拟的类是一种特殊情况 - 但我不记得为什么,或者在网上找到任何关于它的信息。
请帮助我 - 为什么我的代码有效?!
objective-c - NSAssert1 的参数类型错误
这不是给我一个错误,而是我想摆脱的几个警告。
我得到的警告是:Format specifies type 'long' but the argument has type 'OSErr' (aka 'short')
. 显然我可以通过使用long
来改变它,OSErr
但我想知道为什么我会收到错误。这是一个upcast,所以我认为它不应该引起任何问题。
谁能解释一下?
java - 在检查 instanceof 时向上转换混淆
问题:为什么在这两种情况下输出都是正确的?
c++ - 分量系统向上转换的反转
我目前正在开发一个用 c++ 编写的基于组件的游戏引擎。所有组件都继承自组件基类。场景中的所有组件都被向上转换为组件的向量,它们可以被迭代并且Update()
可以被调用。
我正在尝试为组件设计一个通信系统。如果我有一个名为GetComponent<Type>()
Like Unity 的函数,我将能够从它被向上转换之前的状态返回一个组件。
所以基本上我有一个向上转换的组件,我想反转它,所以它是它的原始类,然后通过函数返回它(就像它曾经的类一样)。这可能吗?如果有可能,组件如何知道它曾经是什么类?
有没有我可以学习的例子?
c# - C#:超类在向上转换后仍有子类信息
我有 2 种类型:BaseQuestion
和Question
. Question
从 继承一些属性BaseQuestion
。现在我已经创建了一个 Web API 来提供一个BaseQuestion
可用的。该Question
数据类型具有我不想提供的其他属性。我有一个检索 a 的方法,Question
我最初的计划是将它隐式向上转换为BaseQuestion
. 我认为它会丢失所有我不想访问的额外属性,我可以将其归还。好吧,它没有。这就是我所做的:
bq 的类型仍然是“问题”。我无法访问 BaseQuestion 属性,但我仍然可以在调试器中看到它们,并且它们位于我发送给客户端的 JSON 输出中。
关于如何“强制” bq 成为类型BaseQuestion
而不具有子类中定义的任何属性的任何想法?