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());
}
}
}