面向对象——虚方法

简介: 面向对象——虚方法

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


注意:1、virtual修饰符不能与static、abstract或者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修饰符不能与new、static或者virtual修饰符同事时使用。另外、重新方法只能用于重写基类的虚方法,不能用来单独声明方法。


例:

tt.png


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


               }


           }


       }


   }



tt.png

目录
相关文章
|
2月前
什么是多态?面向对象中对多态的理解
本文介绍了面向对象编程中的多态概念,包括其定义、优点以及编译时多态和运行时多态的具体实现方式。通过实例展示了函数重载、运算符重载、虚函数、接口和抽象类的应用,帮助读者深入理解多态的灵活性和可扩展性。
136 6
|
5月前
|
Java
Java面向对象 ( 多态 | final关键字 | 接口 )
Java面向对象 ( 多态 | final关键字 | 接口 )
|
7月前
|
安全 Java 编译器
Java面向对象之——多态
Java面向对象之——多态
|
Java
Java面向对象之多态
Java面向对象之多态
63 0
|
Java
Java面向对象多态
多态概述 Java 多态是指同一种类型的对象,在不同的情况下有着不同的状态和行为。它是基于继承、重写和向上转型等特性实现的,多态是面向对象编程的三大特征之一,其他两个分别是封装和继承。 Java 多态包括以下三种方式 方法重写(Override) 子类可以对从父类继承的方法进行重写,以便根据子类的需要来覆盖掉父类中的方法实现。这样在调用时,可以根据对象的不同来执行对应的方法。
70 0
|
编译器 C++
C++类和对象-继承&多态
C++类和对象-继承&多态
83 0
|
编译器 C++
c++面向对象程序设计——基类和派生类(二)
c++面向对象程序设计——基类和派生类(二)
130 0
|
数据安全/隐私保护 C++
c++面向对象程序设计——基类和派生类(一)
c++面向对象程序设计——基类和派生类(一)
419 0
|
编译器 C++ 开发者
C++虚函数详解:多态性实现原理及其在面向对象编程中的应用
在面向对象的编程中,多态性是一个非常重要的概念。多态性意味着在不同的上下文中使用同一对象时,可以产生不同的行为。C++是一种面向对象的编程语言,在C++中,虚函数是实现多态性的关键
171 0