C# 在尝试实现运行时多态性时,如何访问派生类中基类的受保护变量?
在这段代码中,我想实现运行时的多态性,并希望使用 我在figure类中为矩形定义的宽度变量 和方形类(矩形为1周长,圆形为1周长) 计算面积和周长(基本上要增加 C#的可重用性特性),但我不知道该怎么做#C# 在尝试实现运行时多态性时,如何访问派生类中基类的受保护变量?,c#,constructor,polymorphism,abstract-class,overriding,C#,Constructor,Polymorphism,Abstract Class,Overriding,在这段代码中,我想实现运行时的多态性,并希望使用 我在figure类中为矩形定义的宽度变量 和方形类(矩形为1周长,圆形为1周长) 计算面积和周长(基本上要增加 C#的可重用性特性),但我不知道该怎么做# 您必须以稍微不同的方式定义类。您需要在每个新构造函数中定义width参数,然后将其传递给基本构造函数 class Rectangle:figure { int h; public Rectangle(int h, int w):base(w) { this.h
您必须以稍微不同的方式定义类。您需要在每个新构造函数中定义
width
参数,然后将其传递给基本构造函数
class Rectangle:figure
{
int h;
public Rectangle(int h, int w):base(w)
{
this.h = h;
}
....
class Circle:figure
{
public Circle(int w) :base(w)
{
}
....
请注意,在您的示例中,您仅使用一个参数实例化了矩形
,但现在必须同时设置高度和宽度:
figure f = new Rectangle(10 , 20);
figure f1 = new Circle(20);
因此,每次我想在派生类中使用基类变量时,我都必须声明它是派生类的周长,以及base?@ofirf。如果我理解正确,那么是的。你必须在派生构造函数中声明它,并将其传递给基类构造函数。毕竟你实例化了派生类,所以这是定义它的地方。Un幸运的是,构造函数是唯一不会自动从基类继承的方法。在每个派生类中,您必须手动实现构造函数继承。
figure f = new Rectangle(10 , 20);
figure f1 = new Circle(20);