gpt4 book ai didi

c# - 如何防止某些方法的继承?

转载 作者:太空狗 更新时间:2023-10-29 18:03:42 26 4
gpt4 key购买 nike

如何防止派生类中某些方法或属性的继承?!


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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com