面向对象——虚方法

举报
AI浩 发表于 2021/12/23 00:50:03 2021/12/23
【摘要】 通过virtual关键字修饰的方法称为虚方法。虚方法可以被子类重写。例如程序中经常用的ToString()方法就是一个虚方法,它可以在其子类中重写,实现输出自定义格式的字符串。 注意:1、virtual修饰符不能与static、abstract或者override修饰符同时使用。 2、虚方法不能是私有的,所以virtual修饰符不能...

通过virtual关键字修饰的方法称为虚方法。虚方法可以被子类重写。例如程序中经常用的ToString()方法就是一个虚方法,它可以在其子类中重写,实现输出自定义格式的字符串。

注意:1virtual修饰符不能与staticabstract或者override修饰符同时使用。

2、虚方法不能是私有的,所以virtual修饰符不能与private修饰符同时使用。

例:使用virtual修饰符声明一个虚方法,用来计算两个数的和

Public virtual int Add( int x,int y)

{

         Return x+y;

}

2、重写方法:如果一个方法声明中含有override修饰符,则称该方法为重写方法,它主要用来使用相同的签名重写继承的虚方法。虚方法主要用来引入新方法,重写方法则使从积累继承而来的虚方法专用化。

例:public override int Add(int x, int y)

{return x+y;}

注意:override修饰符不能与newstatic或者virtual修饰符同事时使用。另外、重新方法只能用于重写基类的虚方法,不能用来单独声明方法。

例:

  public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        /// <summary>

        /// 建立的虚方法,可以在子类中被重写

        /// </summary>

        class Operation

        {

            public virtual double operation(int x,int y)

            {

                return x * y;

            }

        }

        /// <summary>

        /// 在子类中重写虚方法

        /// </summary>

        class Addition : Operation

        {

            public override double operation(int x, int y)

            {

                return (x + y);

            }

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            comboBox1.SelectedIndex = 0;

        }

        private void txtNum1_KeyPress(object sender, KeyPressEventArgs e)

        {

            if (!(e.KeyChar <= '9' && e.KeyChar >= '0') && e.KeyChar != '\r' && e.KeyChar != '\b')

            {

                e.Handled = true;

            }

        }

        private void txtNum2_KeyPress(object sender, KeyPressEventArgs e)

        {

            if (!(e.KeyChar <= '9' && e.KeyChar >= '0') && e.KeyChar != '\r' && e.KeyChar != '\b')

            {

                e.Handled = true;

            }

        }

        private void button1_Click(object sender, EventArgs e)

        {

            if (txtNum1.Text == "" || txtNum2.Text == "")

            {

                MessageBox.Show("请输入数字", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }

            else

            {

                if (comboBox1.SelectedIndex == 0)

                {

                    Operation multiplication = new Operation();//原始虚方法进行乘法运算

                    txtResult.Text = multiplication.operation(Convert.ToInt32(txtNum1.Text.Trim()), Convert.ToInt32(txtNum2.Text.Trim())).ToString();

                }

                else

                {

                    Operation Addition = new Addition();

                    txtResult.Text = Addition.operation(Convert.ToInt32(txtNum1.Text.Trim()), Convert.ToInt32(txtNum2.Text.Trim())).ToString();

                }

            }

        }

    }

文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。

原文链接:wanghao.blog.csdn.net/article/details/105481572

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。