面向对象设计原则:继承表达「is-a」关系。
如果你继承父类,却想要屏蔽父类某个成员,大概率:不应该用继承,改用【组合】。
// 基础功能类
public class AnimalCore
{
public void Bark()
{
Console.WriteLine("叫唤");
}
public void Run()
{
Console.WriteLine("奔跑");
}
}
// Fish 内部持有AnimalCore,按需暴露方法,不继承
public class Fish
{
private readonly AnimalCore _core = new AnimalCore();
// 只开放需要的方法
public void Bark()
{
_core.Bark();
}
// Run 直接不对外暴露,外部完全看不到!
}