【发布时间】:2010-11-05 16:18:00
【问题描述】:
我有一个处理汽车贴花信息的超类。我有一个处理交易的特定贴花信息的子类。我在事务贴花中有一个特殊的覆盖,用于在设置贴花 # 之前检查某些事情。我遇到的问题是,有时我需要获取有关通用贴花对象的信息并将其设置为我的事务贴花。例如:
TransactionDecal myTransactionDecal = new TransactionDecal();
Decal myGenericDecal = new Decal();
myTransactionDecal = (TransactionDecal) myGenericDecal.getGenericDecal();
但我收到一个运行时错误,告诉我无法在类型之间进行转换。我到底做错了什么,这是正确的方法吗?谢谢!
【问题讨论】:
-
我认为添加类定义将有助于解决问题。
-
VB.NET 最新版本。错误消息是:无法将“贴花”类型的对象转换为“交易贴花”类型。
-
你为什么要在贴花上做 getGenericDecal()?不应该只是 myTransactionDecal = (TransactionDecal) myGenericDecal;我同意 CAbott,添加你的类定义。
-
getGnericDecal() 方法只是一个示例,因为我实际上是使用一种方法来获取通用贴花。对不起,应该更清楚。所以我真正拥有的是:myTransactionDecal = GetGenericDecal();
-
好的,这里有一个更新,我想我可以更好地总结我的问题。我在特定 TransactionDecal 类上的属性具有特定的设置器约束。因此,当我尝试将其转换为基础时,它会起作用,但我失去了设置器约束功能,因为它只使用基础的方法。
标签: inheritance casting polymorphism