如何防止派生类中某些方法或属性的继承?!
public class BaseClass : Collection
{
//Some operations...
//Should not let derived classes inherit 'Add' method.
}
public class DerivedClass : BaseClass
{
public void DoSomething(int Item)
{
this.Add(Item); // Error: No such method should exist...
}
}
最佳答案
您想要的模式是组合(“Has-a”),而不是继承(“Is-a”)。 BaseClass 应该包含一个集合,而不是从集合继承。然后 BaseClass 可以有选择地选择在其接口(interface)上公开哪些方法或属性。其中大部分可能只是在内部集合上调用等效方法的传递。
在子类中将事物标记为私有(private)是行不通的,因为任何具有基类型变量(Collection x = new DerivedClass()
)的人仍然能够通过以下方式访问“隐藏”成员基本类型。
如果“是一个”与“有一个”不适合您,请从 parent 与 friend 的角度来考虑。你无法选择你的 parent ,也无法将他们从你的 DNA 中移除,但你可以选择与谁交往。
关于c# - 如何防止某些方法的继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3772321/