polymorphism 相关问题

在计算机科学中,多态性是一种编程语言特性,它允许以统一的方式处理不同数据类型的值。

`var a = new B(); a = 新 B(); a = new C();` 不应该工作...已解决

抱歉,我的标题诱饵,但这是我的情况; 我正在使用这本书《彻底攻略Java SE 11 Silver问题集》进行学习,这是日本初学者Java工程师的流行教科书,...

回答 1 投票 0

如果类在单独的文件中定义,java多重继承(有点)可以工作吗?

抱歉,我的标题诱饵,但这是我的情况; 我正在使用这本书《彻底攻略Java SE 11 Silver问题集》进行学习,这是日本初学者Java工程师的流行教科书,...

回答 1 投票 0

C++多重继承-类方法运行两次

我有一个练习多重继承和多态性的练习,但有些事情进展不顺利。 该练习包括我需要构建的 4 个类: 生物 字符 * 名称 年龄 int numOfOffspr...

回答 1 投票 0

C++ STL 列表中派生类对象的多态行为

我将基类和派生类(Account、StudentAccount、EmployeeAccount)的对象存储在 STL 列表中,并使用 STL 迭代器处理它们。对象的动态多态行为并不...

回答 2 投票 0

以类为参数的 Locust 多态性

我正在编写 Locust 脚本并想要扩展一个基类。一个子类与另一个子类之间有两个不同的值(dto_class 和 api_suffix)。其他一切都是共享的 locust_base.py(

回答 1 投票 0

Haskell 支持封闭多态类型吗?

SO是一场狗屎秀。感谢您的搭车。

回答 6 投票 0

如何生成一个给定大小的数组,并填充一个字段?

我想创建一个函数,给定任何类型的值、一维数组的维度和要设置的列,将返回一个填充空值的一维数组,除了...

回答 1 投票 0

如何获取数组元素的类型?

我正在编写一个迭代数组的多态 PL/pgSQL 函数。我对使用 FOREACH 很感兴趣,但是我不知道如何声明具有正确类型的临时变量。 我的

回答 2 投票 0

如何通过泛型减少样板代码

符合通用协议的结构体很少: 协议 StateMachineState {...} 结构视频模式:StateMachineState { func Transit(状态: PhotoMode) -> 过渡? { 重新...

回答 1 投票 0

使用类型约束对通用 Kotlin 类进行子类化

我在 Kotlin 中组合子类化多态性和泛型(临时多态性)时遇到了问题。 这是我的类型定义: 接口状态 接口 StatefulContainer 我在 Kotlin 中组合子类化多态性和泛型(临时多态性)时遇到了问题。 这是我的类型定义: interface State interface StatefulContainer<out S : State> { val state: S } interface StatefulContainerRepository<C: StatefulContainer<S>, S: State> // Specialization starts here sealed interface MyState : State enum class StateA : MyState { A1, A2 } enum class StateB : MyState { B1, B2 } sealed interface MyEntity : StatefulContainer<MyState> { override val state: MyState } data class EntityA(override val state: StateA) : MyEntity data class EntityB(override val state: StateB) : MyEntity sealed interface MyContainerRepository<C: StatefulContainer<S>, S: MyState>: StatefulContainerRepository<C, S> class ARepository: MyContainerRepository<EntityA, StateA> 类型检查器返回以下错误:Type argument is not within its bounds. Expected: StatefulContainer<StateA>. Found: EntityA。这很奇怪,因为EntityA是一个StatefulContainer<StateA>——至少我是这么认为的。但是,如果我进行以下修改: data class EntityA(override val state: StateA) : MyEntity, StatefulContainer<StateA> 类型检查器抱怨Type parameter S of 'StatefulContainer' has inconsistent values: MyState, StateA。为什么会这样呢?如何正确输入上面的类层次结构? 我习惯了 Haskell 等语言的更直接的参数多态性,或者纯 OO 子类型。这里的组合,再加上 JVM 的类型擦除,让我很难理解发生了什么。因此,除了上面的具体问题之外,我还希望获得一些更基本的见解 - 哪些概念在起作用,如果我设法理解它们,将帮助我解决这个问题和类似的情况? 这很奇怪,因为 EntityA 是 StatefulContainer<StateA>。 这不是真的。 EntityA是一个MyEntity,而那只是一个StatefulContainer<MyState>,你希望它比实际情况更具体。只有以下内容才有效: class ARepository: MyContainerRepository<EntityA, MyState> 或者,您可以通过另一种方式声明 EntityA。你建议这个: data class EntityA(override val state: StateA) : MyEntity, StatefulContainer<StateA> 但这也不起作用,因为 StatefulContainer<StateA> 与 MyEntity 不兼容。他们的属性不匹配。让我们看看如果上述方法可行会发生什么。为了更好地演示它,我们首先让 MyEntity 将其属性覆盖为 var 而不是 val (*): override var state: MyState 然后考虑这段代码: val entityA: StatefulContainer<StateA> = EntityA(StateA.A1) val myEntity: MyEntity = entityA myEntity.state = StateB.B1 首先,我们创建 EntityA 的一个新实例,然后将其转换为 MyEntity。通过上面的 EntityA 声明,应该可以正常工作,因为它具有 MyEntity 和 StatefulContainer<StateA> 两种类型。前两行很好。然后让我们看最后一行:乍一看一切似乎都正常:我们更改 state 的 MyEntity 值并将其设置为允许的子类型之一。但请记住,底层对象实际上是 EntityA 的实例。并且 都不允许其值被更改(它被声明为 val),nor 也不能保存 StateB.B1(因为它是 StateA 类型)。这里出了严重的问题。上面的代码没有错误,所以它一定是EntityA的声明:它显然不可能同时是MyEntity和aStatefulContainer<StateA>。 只需删除 MyEntity 作为 EntityA 的子类型,如下所示: data class EntityA(override val state: StateA) : StatefulContainer<StateA> 现在您的初始代码将按预期工作。 (*):这是完全合法的,因为通过覆盖它会创建一个新属性,该属性可以具有任何特征,只要它具有also来自超类的特征。

回答 1 投票 0

模板可能不是“虚拟”

鉴于下面的代码,编译器显示一条消息指出该错误:模板可能不是“虚拟”。有人对如何解决该错误有建议吗? 模板 < class FOO_TYPE>...

回答 5 投票 0

在Python中,如何/应该使用装饰器来实现函数多态?

假设我们有一个类如下: 类 PersonalChef(): def 厨师(): print("煮东西......") 我们希望它烹饪的食物是一天中不同时间的函数,我们可以做到

回答 1 投票 0

为什么我不能使用行多态变量?

看一下这个 PureScript 代码: 类型 MyOtherProps = (值:: 字符串) 类型 MyProps = (a :: String) A :: forall 道具幻影 allProps 。联合 MyProps MyOtherProps allProps => 联盟...

回答 1 投票 0

为什么动态调度在模板函数中不起作用?

我有以下代码。有一个基类 (Node) 和一个派生类 (NumberExprNode),每个类都有一个虚拟相等方法。 #包括 #包括 #包括<

回答 1 投票 0

Java 中除了多态之外还有其他选择吗?

我正在阅读一篇有关 Java 面试常见问题的文章,并被一个问题困住了:“多态性的替代方案是什么?” 我搜索过但没有得到任何合理的答案...

回答 2 投票 0

主JAVA中显示方法未连接

我不知道如何从形状类调用显示方法到Main方法。这是一个作业,我们不应该改变 Main 中写的内容,所以问题就来了......

回答 1 投票 0

为什么超类不能调用子类的方法?

我是一名高中计算机科学老师,正在教授 Java 的多态性。我的学生问我这个问题,我也没有很好的答案。 假设我有一个 Employee 类。还有...

回答 1 投票 0

如何从存储在不同类中的基类型向量调用派生类型方法?

假设我有一些类 foo,它有一个指向另一个类 Bar 的指针向量和一个记录每个 Bar 的内部类型的 LogBarVec() 方法: 类 Foo { std::向量&...

回答 1 投票 0

什么时候适合将 unique_ptr 分配给共享_ptr?

这是对此处提出的问题的后续:Does C++11 unique_ptr and shared_ptr能够转换为彼此的类型吗?更具体地说,是得票最高的答案。 令人窒息的片段...

回答 1 投票 0

Swift 中的多态性 - 函数重写

有一个基类: 基类{ func foo(到值:S){ print("基类 foo") } } 以及从 Base 派生的: 第一类:基础{ func foo(到 val...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.