polymorphism 相关问题

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

在 Golang 中使用多态与 switch?

我有一个允许客户购买汽车的端点。 PurchaseReq 结构看起来像这样: 类型PurchaseReq结构体{ 客户字符串 销售代表字符串 位置...

回答 1 投票 0

通过引用返回的函数和返回 const 值的 const 函数之间的区别[重复]

我正在为数组创建一个类以用作堆栈,并遇到两种类型的函数来返回顶部元素。我无法理解两者之间的区别以及编译器如何决定...

回答 3 投票 0

多态多对多关系模型属性不返回集合,但 ->get() 会返回集合

我有两个模型 Product 和 ProductType,它们都与 Usp 模型有关系。我已经建立了这样的模型。 产品类扩展模型 { 使用HasFactory、SoftDeletes;

回答 1 投票 0

有没有办法让基类要求派生类具有与派生的同一类的对象进行比较的函数?

我有一项家庭作业,该作业的一小部分要求一个抽象的父“电影”类,其中包含三个具体子类:“喜剧”、“戏剧”和“古典”。 每个子类永远不会

回答 1 投票 0

如何使用morphtomany

我正在尝试创建一个标记系统,现在我得到了两个表,如下图所示 标签 可标记的 我想根据 `tag_id 标记期刊和 id。然而,期刊总是创造......

回答 2 投票 0

在laravel中从多态关系中获取数据

我有三个具有多态关系的表, 维护: -ID -stock_SNW_issue_id 过时: -ID -stock_SNW_issue_id 员工绩效 -ID -性能_id -性能类型 我想要...

回答 1 投票 0

在c#中使用MongoDB.Bson查询MongoDB的多态性

我在 mongo DB 中有一些集合,其中包含几种类型的文档。 所有文档都包含基本的公共属性和一些额外的属性。 在 C# 中,它表示为多态性: [BsonKnownTypes(typeof(C...

回答 1 投票 0

使用主/子类“Cat cat1 = new Cat(); 与 Animal cat2 = new Cat();”创建对象之间的区别

(第一次在Stackoverflow发帖,所以如果我做错了,我很抱歉=() 从类创建对象或从其继承的类创建对象有什么区别? 我编写了这段代码:en...

回答 1 投票 0

方法 doSomething(vector<ParentClass>) 是否可以根据作为参数传递的向量<ChildClass>类型而采取不同的行为?

在参加 C++ 入门课程时,我开始思考以下内容是否可行: #包括 使用命名空间 std; 类父级{}; ChildA 类:公共 Parent {}; c...

回答 3 投票 0

C++中不能声明抽象类型的变量吗?

我在 C++ 中有以下 switch 语句,其中 BaseType 是一个抽象类: 开关(富) { 情况1: { DerivedType t = SomeDerivedType(); //实例化一些派生类型。

回答 1 投票 0

使用自定义转换器进行的多态 Json 序列化/反序列化在 .NET 8 中被破坏

我有一些使用多态性的类,我需要通过 OData 控制器将它们发送到客户端。在客户端上,我已将转换器添加到 JsonSerializerOptions 以确定正确的...

回答 1 投票 0

Python - 实例方法中的多态性与静态方法中的多态性

实例方法和静态方法之间有什么实际区别,因为这两个代码返回相同的结果?我知道静态方法不会对“self”进行操作,并且没有

回答 1 投票 0

VBA 嵌套类

我有一个可以编译的 VBA 嵌套类,但我想更好地格式化它以供扩展使用。 目前要进入动物/猫类,需要使用 Animal.clsCat。我的问题是,有没有...

回答 1 投票 0

TypeORM多态关系无法从父级获取数据

所以我在模型中使用 https://github.com/bashleigh/typeorm-polymorphic 作为多态关系。有几个型号 // 设备实体 @实体() @TableInheritance({ 列: { 类型: 'varchar', 名称:...

回答 2 投票 0

在java中调用使用泛型的多态方法

我身处 Java 泛型地狱!执行此操作的正确方法是什么: 接口验证器 { 无效验证(T项); } 类 ValidatorImplOne 实现 Validator 我身处 Java 泛型地狱!正确的做法是什么: interface Validator<T extends ParentThing> { void validate(T item); } class ValidatorImplOne implements Validator<ChildThingOne> { @Override public void validate(ChildThingOne thing1) { // whatever } } class ValidatorImplTwo implements Validator<ChildThingTwo> { @Override public void validate(ChildThingTwo thing2) { // whatever } } // Initialize this with string to ValidatorImplOne or ValidatorImplTwo instances Map<String, Validator<? extends ParentThing>> VALIDATORS = ... public static void validate(String s, ParentThing thing) { Validator<? extends ParentThing> validator = VALIDATORS.get(s); // Does not compile! Complains that thing is not the right type. validator.validate(thing); } 即使 Eclipse 自动完成功能也告诉我验证应该采用 ParentThing 参数,但如果我传递 ParentThing,编译器仍然会抱怨。 :( 如果我强制转换或删除泛型,这将起作用,但我想知道如何在没有编译器警告的情况下以“正确”的方式执行此操作。 这实际上是您希望编译器实现的行为。 您给出的代码不是类型安全的,因此编译器要求您进行类型转换是有道理的。 这是因为每个 validate 方法都采用 ParentThing 的特定子类。例如,在 ChildThingOne 验证器中,传递到 validate 方法的对象必须可从 ChildThingOne 进行分配。当您有 Validator<? extends ParentThing> 的实例时,编译器不知道 validate 的实际类型需要什么。 更一般地,编译器无法保证传递给 ParentThing 的 validate 可分配为 ParentThing 的特定子类型。 你会发现代码validator.validate(new ChildThingOne())有同样的编译错误。 这可以在基于您的简单示例中看到: public static void validate(String s, ParentThing thing) { Validator<? extends ParentThing> validator = new ValidatorImplOne(); //? extends ParentThing means an unknown, but SPECIFIC, implementation of ParentThing validator.validate(new ChildThingOne()); //cannot compile //The compiler doesn't know if ChildThingOne is the actual type validator wants } 要使用泛型执行此操作,您必须使用扩展 Validator<ParentThing> 的类。正如您所指出的,另一种选择是使用类型转换。 以下是如何修改初始代码以进行编译和工作的示例: public static <T extends ParentThing> void validate(String s, T thing) { Validator<T> validator = (Validator<T>) VALIDATORS.get(s); validator.validate(thing); }

回答 1 投票 0

有没有办法使扩展多态?

我有以下无法更改的java类 接口父... Child1Class 类实现 Parent... Child2Class 类实现 Parent... GrandChild1Class 类扩展 Child1Class ... ... 不...

回答 1 投票 0

是否可以完全覆盖c#中的属性?

我有一个来自我无法控制的库的父类,并且我正在尝试创建一个覆盖该类中的公共属性的子类。我发现答案是使用 new 关键字...

回答 2 投票 0

使用 Mockito 的 ArgumentCaptor 类来匹配子类

下面的代码显示了我的问题。实际上,我尝试使用 Mockito 的 ArgumentCaptor 来验证某个具体类是否调用过一次方法。我想使用 ArgumentCaptor h...

回答 4 投票 0

Fortran 中的隐式实数-复数转换

fortran的新标准对于调用和过程定义之间的不匹配更加严格。然而,有很多遗留代码,例如,复杂数组被视为......

回答 1 投票 0

多态性 - 继承:不同类型的构造函数和静态 - 动态类型的对象

类顶级{ 浮点数 f = 1.0f; 公共无效m1(顶部a,短i){ System.out.println("m1 (Top, Short) 在 Top 类中"); } 公共无效m1(顶部a,int i){ 系统.out.

回答 1 投票 0

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