【发布时间】:2016-07-08 20:47:33
【问题描述】:
我不知道如何正确表达这个问题,但我似乎在 StackOverflow 上找不到类似的问题
假设我有一个抽象基类A 和一个子类B。
显然我可以通过这两行创建子对象
A child = new B();
B child = new B();
而且它们似乎支持相同的方法用法。
有什么区别?
【问题讨论】:
-
B必然是A。它拥有A拥有的一切,甚至可能更多。如果您在B中添加了在A中未定义的额外方法或属性,如果您将变量视为A,您将无法使用它们。您必须将其转换回B。 -
@GlorinOakenfoot,嗯,有道理。我认为出现这种情况的原因是因为我的子类中目前没有任何额外的公共方法,所以 A 和 B 在技术上支持同一组方法:)
-
@ygongdev 这很典型。子类之间通常变化的是实现而不是接口
标签: c# class inheritance abstract-class