C#——重载抽象方法

创建窗体程序,求圆球 圆锥 圆柱的体积,理解重载抽象方法的使用

 

设计界面:

 

编写代码:

 

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;

        }

    }

 

}

 

 

运行结果:

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值