C#抽象类Shape实现代码无输出及调用GetArea方法报错问题咨询
问题分析与解决方案
嘿,我来帮你梳理下问题出在哪,以及怎么解决!
为什么代码没有输出?
你的Main方法是空的呀!没有任何执行逻辑,也没有输出语句,程序运行后自然啥都看不到~
为什么直接调用GetArea()会报错?
GetArea()是实例方法(不属于静态成员),你不能直接在静态的Main方法里调用它,必须先创建对应子类的实例对象,通过对象来调用这个方法。另外,Shape是抽象类,本身不能被实例化,得用它的子类Rectangle和Circle来创建实例。
修正后的完整代码
class Program { abstract class Shape { public abstract double GetArea(); } class Rectangle : Shape { double length = 100.57; double width = 100.14; public override double GetArea() { double result = length * width; return result; } } class Circle : Shape { double radius = 50.34; public override double GetArea() { double result = Math.PI * Math.Pow(radius, 2); return result; } } static void Main(string[] args) { // 1. 创建Rectangle和Circle的实例对象 Rectangle rect = new Rectangle(); Circle circle = new Circle(); // 2. 调用实例的GetArea方法计算面积 double rectArea = rect.GetArea(); double circleArea = circle.GetArea(); // 3. 输出计算结果,也可以格式化让输出更友好 Console.WriteLine($"矩形的面积是:{rectArea:F2}"); // F2表示保留两位小数 Console.WriteLine($"圆形的面积是:{circleArea:F2}"); // 可选:让程序运行后暂停,方便查看结果(控制台窗口不会一闪而过) Console.ReadKey(); } }
关键说明
- 实例化子类:通过
new Rectangle()和new Circle()创建具体的图形对象 - 调用实例方法:用创建好的对象(比如
rect)来调用GetArea() - 输出结果:用
Console.WriteLine把计算结果打印到控制台,{rectArea:F2}是格式化输出,保留两位小数让结果更美观 Console.ReadKey():可选的语句,让程序运行后等待用户按下任意键再关闭控制台,避免窗口一闪而过看不到结果
内容的提问来源于stack exchange,提问作者user16859238
相关产品推荐
相关产品推荐

