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

标签 c# oop class inheritance

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


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/

相关文章:

c# - 如何计算目录中文件的匹配数

c# - Dotnet nuke 代码隐藏事件未执行

jquery - 使用 jQuery 更改 CSS 类属性

Python(OOP)列表附加错误

c# - 在哪个控件上调用 DoDragDrop 方法是否重要?

c# - 在 while 循环中获取变量已声明的错误

java - 在java中实现接口(interface)和抽象类中都存在的方法

Javascript继承方法重写不起作用

java - 如何转换为指定的类类型?

Java-类<?延伸 Collection >