考虑以下类:
public abstract class Planet { protected abstract Material Composition { get; } } public abstract class TerrestrialPlanet : Planet { protected override Material Composition { get { return Type.Rocky; } } } public abstract class GasGiant : Planet { protected override Material Composition { get { return Type.Gaseous; } } }
有没有办法阻止非抽象对象直接从类继承Planet
?
换句话说,我们可以强制执行任何直接继承的类Planet
是抽象的吗?
// ok, because it doesn't directly inherit from Planet public class Earth : TerrestrialPlanet { ... } // ok, because it is abstract public abstract class IcyPlanet : Planet { ... } // we want to prevent this public class Pluto : Planet { ... }
Servy.. 5
不,您无法阻止非抽象类继承您创建的给定公共类.
如果所有从基地派生的类将在同一程序,并没有具体的类的会,可以使基类internal
,以避免将其暴露在外部的一切,这将阻止其他组件直接扩展它.如果它需要公开公开,或者具体的实现将在同一个程序集中,那么这当然不是一种选择.
不,您无法阻止非抽象类继承您创建的给定公共类.
如果所有从基地派生的类将在同一程序,并没有具体的类的会,可以使基类internal
,以避免将其暴露在外部的一切,这将阻止其他组件直接扩展它.如果它需要公开公开,或者具体的实现将在同一个程序集中,那么这当然不是一种选择.