我们怎样才能继承内部类
本文关键字:继承 内部类 我们 | 更新日期: 2023-09-27 18:25:51
我正在尝试以下操作,但在编译时出现错误
class Program
{
static void Main(string[] args)
{
shape.innershape s = new rectangle(); // Error Here
}
}
class shape
{
public int nshape = 0;
public shape()
{
nshape = 1;
innershape n = new innershape();
}
public void MakeOuterShape()
{
}
public class innershape
{
public int nInnerShape = 0;
public innershape()
{
nInnerShape = 1;
}
public void makeInnerShape()
{
}
}
}
class rectangle :shape
{
// Code goes here.
}
我继承了包含innershape
类定义的Shape
类。但当我试图参照innershape
来创建Rectangle
类的实例时,我发现了编译时的错误。为什么?怎样才能使它成为可能?
C#中的内部类与Java内部类不同,它们不属于外部类,这只是可见性的问题。
您必须从shape.innershape
派生矩形。
因为矩形源自形状,而非内部形状
class rectangle: shape {
...
public class innershape
{
...
你不能写
shape.innershape s = new rectangle(); // <- can't convert rectangle to shape
但是你可以放
shape s = new rectangle(); // shape is super class for rectangle
Perharps您应该将代码更改为
class rectangle :shape.innershape
{
...
还可以尝试将类公开,这样可见性就不会受到限制。