Dr *_* TJ 8 c# oop inheritance class
如何防止派生类中某些方法或属性的继承?!
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...
}
}
Run Code Online (Sandbox Code Playgroud)
dth*_*rpe 18
你想要的模式是组合("Has-a"),而不是继承("Is-a").BaseClass应该包含一个集合,而不是从集合继承.然后,BaseClass可以选择性地选择在其接口上公开的方法或属性.大多数可能只是调用内部集合上的等效方法的passthroughs.
在子类中标记私有内容是行不通的,因为任何具有基类型variable(Collection x = new DerivedClass())的人仍然可以通过基类型访问"隐藏"成员.
如果"Is-a"vs"Has-a"没有为您点击,请从父母与朋友的角度来考虑.您不能选择您的父母,也不能将其从您的DNA中删除,但您可以选择与您相关的人.