【发布时间】:2023-04-09 14:24:01
【问题描述】:
我有这 5 个类。一个名为 Figura 的基类是一个抽象类,还有 4 个具体派生类。
我必须创建一个大小为 8 的 Figuras 数组(两个 Cuadrado、两个 Rectangulo、两个 Triangulo 和两个 Circulo),所以我这样做了:
Figuras[] figuras = new Figuras[8];
figuras[0] = new Cuadrado(1);
figuras[1] = new Cuadrado(2);
figuras[2] = new Rectangulo(2, 1);
figuras[3] = new Rectangulo(6, 2);
figuras[4] = new Triangulo(1, 2, 2);
figuras[5] = new Triangulo(3, 3, 4);
figuras[6] = new Circulo(1);
figuras[7] = new Circulo(4);
然后我遍历数组来计算每个图形的面积和周长。当我尝试调用仅属于图形 Circulo 的方法 calcularDiametro() 时,问题就来了。我该怎么做?
我尝试了以下方法,但它不起作用。
foreach (Figuras f in figuras)
if (f is Circulo)
f.calcularDiametro();
任何帮助将不胜感激。
【问题讨论】:
-
只是一个建议 - 在命名变量、类、方法等时使用英文。 cmets 也是如此。尽管您在这里所做的事情是可以理解的,但它不会被国际团队很好地接受。
-
感谢您的建议@Filkolev,我确实做到了。这只是一个练习类之间投射的练习
标签: c# .net oop inheritance