面向对象——虚方法

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

通过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

目录
相关文章
|
1月前
面向对象编程:类、对象、继承与多态
面向对象编程:类、对象、继承与多态
17 0
|
1月前
|
算法 编译器 程序员
【C++入门到精通】C++入门 —— 继承(基类、派生类和多态性)
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。
84 0
|
1月前
|
Java 编译器
【JAVA面向对象编程】--- 探索子类如何继承父类
【JAVA面向对象编程】--- 探索子类如何继承父类
22 0
|
1月前
|
NoSQL 编译器 程序员
『 C++类与对象 』虚函数与多态
『 C++类与对象 』虚函数与多态
|
7月前
|
存储 安全
面向对象软件设计中常见的问题 - 为什么要定义类的私有方法
面向对象软件设计中常见的问题 - 为什么要定义类的私有方法
|
12月前
|
编译器 C++
C++类和对象-继承&多态
C++类和对象-继承&多态
55 0
|
编译器 C++
c++面向对象程序设计——基类和派生类(二)
c++面向对象程序设计——基类和派生类(二)
97 0
|
数据安全/隐私保护 C++
c++面向对象程序设计——基类和派生类(一)
c++面向对象程序设计——基类和派生类(一)
316 0
|
编译器 C++ 开发者
C++虚函数详解:多态性实现原理及其在面向对象编程中的应用
在面向对象的编程中,多态性是一个非常重要的概念。多态性意味着在不同的上下文中使用同一对象时,可以产生不同的行为。C++是一种面向对象的编程语言,在C++中,虚函数是实现多态性的关键
124 0
|
Java
Java面向对象程序设计4继承与多态
Java面向对象程序设计4继承与多态
461 0