我猜我有一些关于C#继承的基本功能,我不明白.有人请赐教吗?
有时,在子类化时,您希望限制创建类实例所需的条件.
让我给你举个例子.如果类确实继承了它们的超类构造函数,那么所有类都将具有无参数构造函数Object
.显然这不正确.
如果你仔细想想,如果构造函数会发生什么是继承,你应该开始看到这个问题.
由于.NET中的几乎所有类型都继承自Object(它具有无参数构造函数),这意味着您创建的几乎所有类型都将被强制使用无参数构造函数.但是有许多类型的参数构造函数没有意义.
版本控制也会出现问题.如果基本类型的新版本与新构造函数一起出现,您将自动在派生类型中获得新的构造函数.这将是一件坏事,以及脆弱的基类问题的特定实例.
还有一个更哲学的论点.继承是关于类型责任(这就是我所做的).构造函数是关于类型协作(这是我需要的).因此,继承构造函数将混合类型责任与类型协作,而这两个概念应该真正保持独立.
无论您是否明确地调用它们,都会调用超类中的构造函数.他们从父类下来.如果构造函数没有在其超类中显式调用构造函数,则在构造函数的代码之前隐式调用该类中的默认构造函数.