分别用类的继承、虚函数、抽象类继承、接口实现计算球、圆柱、圆锥的表面积和体积。

AbstrackClass.cs

//利用抽象类计算球、圆柱、圆锥的表面积和体积

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

namespace ConsoleApp33
{
    //抽象类
    abstract class Circle
    {
        protected double radius;
        protected double height;
        abstract public double CalSuperficialArea();
        abstract public double CalVolume();
    }

    //计算球的表面积和体积
    class Sphere : Circle
    {
        public Sphere(double r)
        { radius = r; }
        public override double CalSuperficialArea()  //计算表面积
        { return (4 * Math.PI * radius * radius); }
        public override double CalVolume()           //计算体积
        { return (4 / 3 * Math.PI * radius * radius * radius); }
    }

    //计算圆柱的表面积和体积
    class Cylinder : Circle
    {
        public Cylinder(double r, double h)
        {
            radius = r;
            height = h;
        }
        public override double CalSuperficialArea()  //计算表面积
        { return (2 * Math.PI * radius * radius + 2 * Math.PI * radius * height); }
        public override double CalVolume()           //计算体积
        { return (Math.PI * radius * radius * height); }
    }

    //计算圆锥的表面积和体积
    class Cone : Circle
    {
        public Cone(double r, double h)
        {
            radius = r;
            height = h;
        }
        public override double CalSuperficialArea()  //计算表面积
        { return (Math.PI * radius * (radius + Math.Sqrt(height * height + radius * radius))); }
        public override double CalVolume()           //计算体积
        { return (Math.PI * radius * radius * height) / 3; }
    }
}

Class.cs

//利用类的继承计算球、圆柱、圆锥的表面积和体积

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

namespace ConsoleApp31
{
    //基类
    class Circle
    {
        protected double radius;
        protected double height;
    }

    //计算球的表面积和体积
    class Sphere : Circle
    {
        public Sphere(double r)
        {radius = r;}
        public double CalSuperficialArea()  //计算表面积
        { return (4 * Math.PI * radius * radius); }
        public double CalVolume()           //计算体积
        { return (4 / 3 * Math.PI * radius * radius * radius); }
    }

    //计算圆柱的表面积和体积
    class Cylinder : Circle
    {
        public Cylinder(double r, double h)
        {
            radius = r;
            height = h;
        }
        public double CalSuperficialArea()  //计算表面积
        { return (2 * Math.PI * radius * radius + 2 * Math.PI * radius * height); }
        public double CalVolume()           //计算体积
        { return (Math.PI * radius * radius * height); }
    }

    //计算圆锥的表面积和体积
    class Cone : Circle
    {
        public Cone(double r, double h)
        {
            radius = r;
            height = h;
        }
        public double CalSuperficialArea()  //计算表面积
        { return (Math.PI * radius * (radius + Math.Sqrt(height * height + radius * radius))); }
        public double CalVolume()           //计算体积
        { return (Math.PI * radius * radius * height) / 3; }
    }
}

Interface.cs

//利用接口计算球、圆柱、圆锥的表面积和体积

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

namespace ConsoleApp34
{
    //接口声明
    public interface ICalArea
    {
        double CalSuperficialArea();        //计算表面积
        double CalVolume();                 //计算体积
    }

    //计算球的表面积和体积
    public class Sphere : ICalArea
    {
        private double radius;//半径
        public Sphere(double r)
        {radius = r;}
        public double CalSuperficialArea()  //计算表面积
        {return (4 * Math.PI * radius * radius);}
        public double CalVolume()           //计算体积
        {return (4/3 * Math.PI * radius * radius * radius);}
    }

    //计算圆柱的表面积和体积
    public class Cylinder : ICalArea
    {
        private double radius, height;      //半径、高
        public Cylinder(double r, double h)
        {   radius = r;
            height = h;
        }
        public double CalSuperficialArea()  //计算表面积
        {return (2 * Math.PI * radius * radius + 2 * Math.PI * radius * height);}
        public double CalVolume()           //计算体积
        {return (Math.PI * radius * radius * height);}
    }

    //计算圆锥的表面积和体积
    public class Cone : ICalArea
    {
        private double radius, height;      //半径、高
        public Cone(double r, double h)
        {
            radius = r;
            height = h;
        }
        public double CalSuperficialArea()  //计算表面积
        {return (Math.PI * radius * (radius + Math.Sqrt(height * height + radius * radius)));}
        public double CalVolume()           //计算体积
        {return (Math.PI * radius * radius * height)/3;}
    }
}

VirtualFunction.cs

//利用虚函数计算球、圆柱、圆锥的表面积和体积

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

namespace ConsoleApp32
{
    //基类
    class Circle
    {
        protected double radius;
        protected double height;
        public virtual double CalSuperficialArea(){ return 0; }
        public virtual double CalVolume(){ return 0; }
    }

    //计算球的表面积和体积
    class Sphere : Circle
    {
        public Sphere(double r)
        { radius = r; }
        public override double CalSuperficialArea()  //计算表面积
        { return (4 * Math.PI * radius * radius); }
        public override  double CalVolume()           //计算体积
        { return (4 / 3 * Math.PI * radius * radius * radius); }
    }

    //计算圆柱的表面积和体积
    class Cylinder : Circle
    {
        public Cylinder(double r, double h)
        {
            radius = r;
            height = h;
        }
        public override double CalSuperficialArea()  //计算表面积
        { return (2 * Math.PI * radius * radius + 2 * Math.PI * radius * height); }
        public override double CalVolume()           //计算体积
        { return (Math.PI * radius * radius * height); }
    }

    //计算圆锥的表面积和体积
    class Cone : Circle
    {
        public Cone(double r, double h)
        {
            radius = r;
            height = h;
        }
        public override double CalSuperficialArea()  //计算表面积
        { return (Math.PI * radius * (radius + Math.Sqrt(height * height + radius * radius))); }
        public override double CalVolume()           //计算体积
        { return (Math.PI * radius * radius * height) / 3; }
    }
}

Program.cs

//分别用类的继承、虚函数、抽象类继承、接口计算球、圆柱、圆锥的表面积和体积

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

namespace ConsoleApp30
{
    class Program
    {
        static void Main(string[] args)
        {
            //利用类的继承实现
            ConsoleApp31.Sphere sp1 = new ConsoleApp31.Sphere(2);
            ConsoleApp31.Cylinder cd1 = new ConsoleApp31.Cylinder(2, 10);
            ConsoleApp31.Cone cn1 = new ConsoleApp31.Cone(2, 20);
            Console.WriteLine("利用类的继承实现");
            Console.WriteLine("球的表面积:{0}\t球的体积:{1}", sp1.CalSuperficialArea(), sp1.CalVolume());
            Console.WriteLine("圆柱的表面积:{0}\t圆柱的体积:{1}", cd1.CalSuperficialArea(), cd1.CalVolume());
            Console.WriteLine("圆锥的表面积:{0}\t圆锥的体积:{1}\n", cn1.CalSuperficialArea(), cn1.CalVolume());

            //利用虚函数实现
            ConsoleApp32.Sphere sp2 = new ConsoleApp32.Sphere(2);
            ConsoleApp32.Cylinder cd2 = new ConsoleApp32.Cylinder(2, 10);
            ConsoleApp32.Cone cn2 = new ConsoleApp32.Cone(2, 20);
            Console.WriteLine("利用虚函数实现");
            Console.WriteLine("球的表面积:{0}\t球的体积:{1}", sp2.CalSuperficialArea(), sp2.CalVolume());
            Console.WriteLine("圆柱的表面积:{0}\t圆柱的体积:{1}", cd2.CalSuperficialArea(), cd2.CalVolume());
            Console.WriteLine("圆锥的表面积:{0}\t圆锥的体积:{1}\n", cn2.CalSuperficialArea(), cn2.CalVolume());

            //利用抽象类继承实现
            ConsoleApp33.Sphere sp3 = new ConsoleApp33.Sphere(2);
            ConsoleApp33.Cylinder cd3 = new ConsoleApp33.Cylinder(2, 10);
            ConsoleApp33.Cone cn3 = new ConsoleApp33.Cone(2, 20);
            Console.WriteLine("利用抽象类实现");
            Console.WriteLine("球的表面积:{0}\t球的体积:{1}", sp3.CalSuperficialArea(), sp3.CalVolume());
            Console.WriteLine("圆柱的表面积:{0}\t圆柱的体积:{1}", cd3.CalSuperficialArea(), cd3.CalVolume());
            Console.WriteLine("圆锥的表面积:{0}\t圆锥的体积:{1}\n", cn3.CalSuperficialArea(), cn3.CalVolume());

            //利用接口实现
            ConsoleApp34.Sphere sp4 = new ConsoleApp34.Sphere(2);
            ConsoleApp34.Cylinder cd4 = new ConsoleApp34.Cylinder(2, 10);
            ConsoleApp34.Cone cn4 = new ConsoleApp34.Cone(2, 20);
            Console.WriteLine("利用接口实现");
            Console.WriteLine("球的表面积:{0}\t球的体积:{1}", sp4.CalSuperficialArea(), sp4.CalVolume());
            Console.WriteLine("圆柱的表面积:{0}\t圆柱的体积:{1}", cd4.CalSuperficialArea(), cd4.CalVolume());
            Console.WriteLine("圆锥的表面积:{0}\t圆锥的体积:{1}", cn4.CalSuperficialArea(), cn4.CalVolume());
        }
    }
}
  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值