【发布时间】:2015-06-10 11:31:29
【问题描述】:
浏览类System.Dynamic.DynamicObject,我发现它是具体(非抽象)类,但通过使其默认构造函数protected 来防止直接创建它的实例。
那么不使用public 构造函数将其抽象化有什么意义呢?
澄清:
class Base1
{
protected Base1() // protected constructor, concrete class
{
}
}
class Derived1 : Base1
{
public Derived1() : base()
{
}
}
abstract class Base2
{
public Base2() // public constructor, abstract class
{
}
}
class Derived2 : Base2
{
public Derived2() : base()
{
}
}
【问题讨论】:
-
这是一个很好的问题伙伴。我希望有人能尽快回答这个问题,因为我自己也很想知道!一开始,我要告诉你,这可能是因为只有孩子才能访问具体对象,但抽象类应该可以解决问题
-
嗯,它没有任何抽象方法。您只需要使用
abstract关键字来启用抽象方法,那么也许他们只是在具有抽象方法的抽象类上使用abstract? -
C# 完全允许您在没有任何
abstract成员的情况下声明abstract类 -
关键字
abstract不是用来限制对构造函数的访问,我想这是重点。类不是抽象的,但作者决定限制访问