C#面向对象之多态的几个练习

本文通过三个实例深入讲解C#中的多态特性:计算平面图形面积与周长,模拟植物大战僵尸游戏,以及模拟装备商店。涉及抽象类、继承和方法实现,展示了多态在实际编程中的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、计算平面图形面积与周长

  • 定义抽象类Shape,类中有两个抽象⽅法,分别是求⾯积Area和周⻓Circumference。
    定义圆类Circle,继承⾃Shape,类中有成员变量radius表示半径,实现Shape中求周⻓和⾯积的⽅法
    定义矩形类Rectangle,继承⾃Shape,类中有成员变量length,width表示⻓和宽,
    实现Shape中的求周⻓和⾯积的⽅法
    定义静态⽅法求⼀个图形的⾯积和周⻓,传⼊不同的参数,查看计算结果

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Shape
{
   
   
    #region 第一题

    /// <summary>
    /// 图形类
    /// </summary>
    abstract class Shape
    {
   
   
        /// <summary>
        /// 求面积
        /// </summary>
        /// <returns></returns>
        public abstract double Area();

        /// <summary>
        /// 求周长
        /// </summary>
        /// <returns></returns>
        public abstract double Circumference();

    }

    /// <summary>
    /// 圆类
    /// </summary>
    class Circle : Shape
    {
   
   
        /// <summary>
        /// 半径
        /// </summary>
        public double radius;

        /// <summary>
        /// 重写图形类的求面积方法
        /// </summary>
        /// <returns></returns>
        public override double Area()
        {
   
   
            return Math.Round(Math.PI * radius * radius, 2);
        }

        /// <summary>
        /// 重写图形类中的求周长方法
        /// </summary>
        /// <returns></returns>
        public override double Circumference()
        {
   
   
            return Math.Round(Math.PI * 2d * radius, 2);
        }


    }

    /// <summary>
    /// 三角形类,继承图形类
    /// </summary>
    class rectangle : Shape
    {
   
   
        /// <summary>
        /// 长
        /// </summary>
        public double length;

        /// <summary>
        /// 宽
        /// </summary>
        public double width;

        /// <summary>
        /// 重写图形的求面积方法
        /// </summary>
        /// <returns></returns>
        public override double Area()
        {
   
   
            return Math.Round(length * width, 2);
        }
        
        /// <summary>
        /// 重写图形类中的额求周长方法
        /// </summary>
        /// <returns></returns>
        public override double Circumference()
        {
   
   
            return Math.Round(2 * (length + width), 2);
        }
    }


    #endregion


    class Program
    {
   
   
        /// <summary>
        /// 静态方法,求图形面积和周长并打印
        /// </summary>
        /// <param name="shape"></param>
        public static void Calculation(Shape shape)
        {
   
   
            Console.WriteLine("该图形的面积是:"+shape.Area());
            Console.WriteLine("该图形的周长是:" + shape.Circumference());
        }
        static void Main(string[] args)
        {
   
   
            Circle circle = new Circle();
            circle.radius = 3;
            Calculation(c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值