You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 01:08:14