Mik*_*ebb 3 c# inheritance abstraction
这是一个例子.我有两个类,一个继承,并且都有一个具有相同名称但不同参数的函数:
public class MyClass
{
//public class members
public MyClass()
{
//constructor code
}
public void Copy(MyClass classToCopy)
{
//copy code
}
}
public class InheritedClass : MyClass
{
//public class members
public InheritedClass():base()
{
//constructor code
}
public void Copy(InheritedClass inheritedClassToCopy)
{
//copy code
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何使基类的复制方法(MyClass.Copy)在InheritedClass中不可继承或不可见?我不想这样做:
MyClass a;
InheritedClass b;
b.Copy(a);
Run Code Online (Sandbox Code Playgroud)
这是否有意义,或者我应该保留此功能吗?我甚至可以要求做什么?
Ree*_*sey 22
这是否有意义,或者我应该保留此功能吗?我甚至可以要求做什么?
试图在基类使用时隐藏这样的公共方法是有问题的.你故意试图违反Liskov替代原则.

你不能做你想做的事情; C#不允许继承成员出现负差异.(实际上几乎没有语言真正做到)
但是,你可能根本不想要一个继承的类.你真正想要的是一个界面.或者......你的两个班级可能没有正确的关系; 或许他们都应该成为第三类的共同兄弟,这是他们的父母.
| 归档时间: |
|
| 查看次数: |
2178 次 |
| 最近记录: |