class baseClass
{
derivedClass nm = new derivedClass();
}
class derivedClass : baseClass
{
}
这段代码可以成功构建。C#允许在
baseClass
中创建derivedClass
对象,可能的原因是什么?您是否能想到任何特定的原因来进行这样做呢?class baseClass
{
derivedClass nm = new derivedClass();
}
class derivedClass : baseClass
{
}
baseClass
中创建derivedClass
对象,可能的原因是什么?您是否能想到任何特定的原因来进行这样做呢?这段代码可以成功编译。
是的,你认为它不能吗?
C#允许在基类中创建派生类对象的可能原因是什么。
因为没有理由禁止它。
你能想到任何具体的原因吗?
例如静态工厂方法?
// BaseClass gets to decide which concrete class to return
public static BaseClass GetInstance()
{
return new DerivedClass();
}
CalendarSystem
是一个公共抽象类,但所有具体派生类都是内部的。class Bang
{
// Recursively call constructor until the stack overflows.
Bang bang = new Bang();
}
我曾经与一位开发者共事,他在我们的代码库中编写了这段代码。我个人认为它很有用。
public class Foo
{
public static Foo MagicalFooValue
{
get { return Bar.Instance; }
}
private class Bar : Foo
{
//Implemented as a private singleton
}
}
derivedClass
可以在 baseClass
中实例化,因为它是一个可访问的类。C# 没有限制你这样做的理由。同样地,在 baseClass
内部也可以创建 baseClass
的实例。