创建窗体程序,求圆球 圆锥 圆柱的体积,理解重载抽象方法的使用
设计界面:
编写代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace yuan
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label3.Text = "";
}
public string select(Shape x) //显示几何形体的体积,该方法的形参类型是抽象类
{
return "体积为:"+ x.getArea();
}
//求圆球体积
private void button1_Click(object sender, EventArgs e)
{
Globe g = new Globe(Convert .ToInt32( textBox1.Text));
label3 .Text +="\n圆球的"+select(g);
}
//圆锥
private void button2_Click(object sender, EventArgs e)
{
Cone c = new Cone(int.Parse ( textBox1 .Text) ,int.Parse ( textBox2 .Text) );
label3.Text += "\n圆锥的" + select(c);
}
//圆柱
private void button3_Click(object sender, EventArgs e)
{
Cylinder c = new Cylinder(int.Parse(textBox1.Text), int.Parse(textBox2.Text));
label3.Text += "\n圆柱的" + select(c);
}
}
//定义抽象类
public abstract class Shape
{
protected double r;
public Shape(double r)
{
this.r = r;
}
public abstract double getArea(); //抽象方法
}
//圆球体
public class Globe:Shape
{
public Globe(double r):base(r) {}
public override double getArea()
{
return 3.14 * r * r * r * 4 / 3;
}
}
//圆锥体
public class Cone : Shape
{
private double hight;
public Cone(double r,double hight):base(r)
{
this.hight = hight;
}
public override double getArea()
{
return 3.14 * r * r * hight / 3;
}
}
//圆柱体
public class Cylinder : Shape
{
private double hight;
public Cylinder(double r,double hight):base(r)
{
this.hight = hight;
}
public override double getArea()
{
return 3.14 * r * r * hight;
}
}
}
运行结果: