C#中虚方法(virtual)详解

更新时间:2023-07-23 04:01:51 阅读: 评论:0

C#中虚⽅法(virtual )详解
前⾔;在前⾯的博客中提到了虚⽅法和,本博⽂详细介绍下虚⽅法:
⽬录:
我的生活⼀.虚⽅法的定义:当有⼀个定义在类中的函数需要在继承类中实现时,可以使⽤虚⽅法,虚⽅法是使⽤关键字virtual 声明的,虚⽅法可以在不同的继承类中有不同的实现,即为基类中定义的允许在派⽣类中重写的⽅法;
⼆.虚⽅法的声明:
⼀般的声明形式如下:
举例:
三.虚⽅法的调⽤:
调⽤上,使⽤⼦类构造的对象调⽤虚⽅法,就会调⽤⼦类的⽅法,使⽤⽗类构造的对象,就会调⽤⽗类的⽅法;(在规则 4 中有举例说明) 1.在基类中声明的虚⽅法⼀般在派⽣类中对其进⾏调⽤,会运⽤到ba
关键字: 当输⼊访问修饰符和override后,系统会⾃⼰弹出我们刚才编写的虚⽅法,直接进⾏选择即可: 2.在运⾏时进⾏调⽤:
四.虚⽅法的规则:
1. 虚拟类其实指的是正常类中的虚拟⽅法,所以虚拟类可以直接使⽤实例,这是与抽象类不同的⼀点; 它不会像抽象类⼀样进⾏报错
2. 虚
拟⽅法是在⽅法前加virtual关键字,对⽅法进⾏声明,说明这个⽅法为虚⽅法;
3. 虚拟函数和正常函数⽆区别;
4. ⼦类继承虚拟类可以实现虚拟⽅法也可以不实现虚拟⽅法; 如下代码所⽰,在调⽤虚⽅法时,对虚⽅法进⾏了重写,这样代码执⾏下来的就是⼦类的⽅法⽽不是⽗类的虚⽅法:::访问修饰符 virtual  函数返回类型 函数名(参数表) {函数体}; class  Person    {        public  virtual  void  XXX ()        {            Console .WriteLine ("我有⼀个梦想,那就是动⾝去往远⽅!!");        }
}
1
2
3
4
5
6 class  Person    {        public  virtual  void  XXX ()//虚⽅法        {            Console .WriteLine ("我有⼀个梦想,那就是动⾝去往远⽅!!");        }    }    class  Boy : Person //继承person    {        public  override  void  XXX ()//虚⽅法调⽤        {            ba .XXX ();        }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
结果如图所⽰:
但是如果我们采⽤ba关键字进⾏调⽤的话就会有以下的结果:
餐饮o2o结果如下:它调⽤了⽗类/基类的虚⽅法
5. 虚⽅法可以在不同的继承类中有不同的实现; 我们在以上案例中继续进⾏添加调⽤虚⽅法: class  Person    {        public  virtual  void  XXX ()        {            Console .WriteLine ("我有⼀个梦想,那就是动⾝去往远⽅!!");        }    }    class  Boy : Person    {        public  override  void  XXX ()        {            Console .WriteLine ("我不想继承⽗类的虚⽅法");        }        public  void  SSS ()        {            Console .WriteLine ("不学习就不会进步,不仅不就没有出⼈头地的机会");        }    }    class  Program    {        static  void  Main (string [] args )        {            Person person = new  Person ();//实例化的虚⽅法类            Boy boy = new  Boy ();//实例化的⼦类            boy .XXX ();//调⽤了⼦类的⽅法            boy .SSS ();            Console .ReadLine ();        }
}
1
2
host文件在哪3
4
带鼓的成语
5
6
智商最高多少7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
比利时国家队五台山海拔多少米
23
24
25
26
27
28 public  override  void  XXX ()        {            ba .XXX ();          // Console.WriteLine("我不想继承⽗类的虚⽅法");
}
1
gets函数2
3
4
当然别忘记实例化哦,我在这⼉就不写实例化的代码了,但是千万不能忘记哦!!  运⾏结果:
五.虚⽅法注意事项:
1.
⼀定要注意,只有为虚⽅法时可以进⾏重写,不能对⾮虚⽅法进⾏重写;
2. 虚⽅法在形式上在⽅法名前加virtual 修饰;
3. 虚⽅法⼀般在基类定义,在派⽣类中实现具体操作,派⽣类实现该⽅法时,要⽤override 对其⽅法进⾏修饰;
4. 当⽤virtual 修饰后,不允许再有 static 、abstract  或者 override  修饰符;
六.虚⽅法的好处:
当在基类中进⾏虚⽅法的定义以后,在派⽣类中可以对其⽅法进⾏调⽤,⽽且可以通过重写来改变其中实现的功能来实现⾃⼰的⼀些功能,⽽不是虚⽅法时,必须重新声明⽅法然后再进⾏⾃⼰想要的功能进
⾏编写然后再进⾏调⽤,但是虚⽅法只需要在派⽣类中对其进⾏调⽤,如果想实现其他的功能可以对其进⾏⽅法等的重写,进⽽实现⾃⼰想要的功能,调⽤基类的虚⽅法来执⾏派⽣类的具体操作。⽽在基类调⽤时,并不需要知道派⽣类是怎么样实现的。因为不同的派⽣类可能实现的⽅式不⼀样。但调⽤的⽅式是⼀样的,实现了不同的功能
七.虚⽅法的作⽤:
1.允许 ⼦类 / 派⽣类 进⾏重写;
2.增加代码的可维护性,脉络较清淅有条理; class  DD : Person    {        public  override  void  XXX ()        {            ba .XXX ();            Console .WriteLine ("我是第⼀个继承虚⽅法的");        }    }    class  SS : Person    {        public  override  void  XXX ()        {            ba .XXX ();            Console .WriteLine ("我是第⼆个继承虚⽅法的");        }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

本文发布于:2023-07-23 04:01:51,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1112058.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实现   函数   代码
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图