在计算机科学中,多态性是一种编程语言特性,它允许以统一的方式处理不同数据类型的值。
我正在 YouTube 上浏览 BroCode Java 教程,不幸的是我陷入了这个多态性示例。我创建了一个 Vehicle 父类,以及 Boat、Bicycle 和 Car 子类...
我不知道如何从形状类调用显示方法到Main方法。这是一个作业,我们不应该改变 Main 中写的内容,所以问题就来了......
`var a = new B(); a = 新 B(); a = new C();` 不应该工作...已解决
抱歉,我的标题诱饵,但这是我的情况; 我正在使用这本书《彻底攻略Java SE 11 Silver问题集》进行学习,这是日本初学者Java工程师的流行教科书,...
如果类在单独的文件中定义,java多重继承(有点)可以工作吗?
抱歉,我的标题诱饵,但这是我的情况; 我正在使用这本书《彻底攻略Java SE 11 Silver问题集》进行学习,这是日本初学者Java工程师的流行教科书,...
我有一个练习多重继承和多态性的练习,但有些事情进展不顺利。 该练习包括我需要构建的 4 个类: 生物 字符 * 名称 年龄 int numOfOffspr...
我将基类和派生类(Account、StudentAccount、EmployeeAccount)的对象存储在 STL 列表中,并使用 STL 迭代器处理它们。对象的动态多态行为并不...
我正在编写 Locust 脚本并想要扩展一个基类。一个子类与另一个子类之间有两个不同的值(dto_class 和 api_suffix)。其他一切都是共享的 locust_base.py(
我想创建一个函数,给定任何类型的值、一维数组的维度和要设置的列,将返回一个填充空值的一维数组,除了...
我正在编写一个迭代数组的多态 PL/pgSQL 函数。我对使用 FOREACH 很感兴趣,但是我不知道如何声明具有正确类型的临时变量。 我的
符合通用协议的结构体很少: 协议 StateMachineState {...} 结构视频模式:StateMachineState { func Transit(状态: PhotoMode) -> 过渡? { 重新...
我在 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来自超类的特征。
鉴于下面的代码,编译器显示一条消息指出该错误:模板可能不是“虚拟”。有人对如何解决该错误有建议吗? 模板 < class FOO_TYPE>...
假设我们有一个类如下: 类 PersonalChef(): def 厨师(): print("煮东西......") 我们希望它烹饪的食物是一天中不同时间的函数,我们可以做到
看一下这个 PureScript 代码: 类型 MyOtherProps = (值:: 字符串) 类型 MyProps = (a :: String) A :: forall 道具幻影 allProps 。联合 MyProps MyOtherProps allProps => 联盟...
我有以下代码。有一个基类 (Node) 和一个派生类 (NumberExprNode),每个类都有一个虚拟相等方法。 #包括 #包括 #包括<
我正在阅读一篇有关 Java 面试常见问题的文章,并被一个问题困住了:“多态性的替代方案是什么?” 我搜索过但没有得到任何合理的答案...
我不知道如何从形状类调用显示方法到Main方法。这是一个作业,我们不应该改变 Main 中写的内容,所以问题就来了......
我是一名高中计算机科学老师,正在教授 Java 的多态性。我的学生问我这个问题,我也没有很好的答案。 假设我有一个 Employee 类。还有...
假设我有一些类 foo,它有一个指向另一个类 Bar 的指针向量和一个记录每个 Bar 的内部类型的 LogBarVec() 方法: 类 Foo { std::向量&...