类的派生和可访问性

本文关键字:访问 派生 | 更新日期: 2023-09-27 18:01:21

我有这个:

class Class1
{...}
public class Class2 : Class1
{
   public void myMethod(){};
}

var sth = new Class2();

现在,我想做sth.myMethod(),但是这个方法是不可访问的,为什么?如何解决这个问题?(我不想通过使Class1公开来解决这个问题)

类的派生和可访问性

不允许。编译器会给出如下错误:

可访问性不一致:基类'YourNamespace '。Class1'类比'YourNamespace '类更难访问。Class2 '

你不能从一个可访问性比你所公开的类低的类继承

在这种情况下,最好的选择是使用组合而不是继承。

public class Class2
{
    private Class1 class1 = new Class1(); // Create an instance instead of inheriting...
    public void MyMethod()
    {
    }
}