C# virtual override abstract new区别
2014-04-09 18:57
537 查看
C# virtual override abstract new区别
C#中关键字virtual、override、abstract、new等经常用到,现总结其用法以及区别如下:
一、abstract
abstract用于声明抽象类以及抽象方法。抽象方法不含主体,在继承类中通过override 关键字重写该函数;抽象类不可实例化,只能被继承。
二、virtual
virtual用于声明虚函数,虚函数是动态确定执行函数的方法,一般可实现方法主体,也可不实现。继承类中通过override 重写或者忽略不重写。也可以重新new该方法,使其变成新的实例方法。
三、override
override 主要用来重写abstract方法以及virtual方法。
四、new
new可以用来重写一个虚函数,也可在子类中new 父类中的实例方法,使其变成自己的方法。
五、综合示例代码如下:
运行结果:
奥迪
ok
car
5years
沪B 88888
1t
A
请按任意键继续. . .
C#中关键字virtual、override、abstract、new等经常用到,现总结其用法以及区别如下:
一、abstract
abstract用于声明抽象类以及抽象方法。抽象方法不含主体,在继承类中通过override 关键字重写该函数;抽象类不可实例化,只能被继承。
二、virtual
virtual用于声明虚函数,虚函数是动态确定执行函数的方法,一般可实现方法主体,也可不实现。继承类中通过override 重写或者忽略不重写。也可以重新new该方法,使其变成新的实例方法。
三、override
override 主要用来重写abstract方法以及virtual方法。
四、new
new可以用来重写一个虚函数,也可在子类中new 父类中的实例方法,使其变成自己的方法。
五、综合示例代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public interface transport { void dowork(); } public abstract class Bus { public abstract void getName(); public abstract void dowork(); public virtual void getTypes() { Console.WriteLine("bus"); } public virtual void getAge() { Console.WriteLine("3years"); } public void getID()//一般方法,若在派生类中重写,须使用new关键字 { Console.WriteLine("沪A 00000"); } public void getWeight() { Console.WriteLine("1t"); } } public class car : Bus { public override void getName() { Console.WriteLine("奥迪"); } public override void dowork() { Console.WriteLine("ok"); } public override void getTypes() { Console.WriteLine("car"); } public new void getAge() { Console.WriteLine("5years"); } public new void getID() { Console.WriteLine("沪B 88888"); } } class A { public virtual void fun1() { Console.WriteLine("A"); } } class B : A { public new void fun1() { Console.WriteLine("B"); } } class Program { static void Main(string[] args) { car mycar = new car(); mycar.getName(); mycar.dowork(); mycar.getTypes(); mycar.getAge(); mycar.getID(); mycar.getWeight(); A a = new B(); a.fun1(); } } }
运行结果:
奥迪
ok
car
5years
沪B 88888
1t
A
请按任意键继续. . .
相关文章推荐
- C#.NET中new, override, virtual abstract关键字的区别
- c#中new和override的区别. virtual和abstract方法的区别.
- c#的new、abstract、virtual、override,sealed关键字区别
- C#多态;父类引用指向子类对象;new和override的区别;new、abstract、virtual、override,sealed关键字区别和使用代码示例;c#类的初始化顺序
- c#中abstract、override、new、virtual、sealed使用和示例
- C#--virtual,abstract,override,new,sealed修饰符学习
- c#中abstract、override、new、virtual、sealed使用
- C# abstract virtual interface的区别(付static、override用法)
- C# abstract virtual interface的区别(付static、override用法)
- C#继承中abstract、virtual、override和new
- C# new virtual override 区别
- C# new virtual override 之间的区别
- new、abstract、virtual、override,sealed关键字区别和使用代码示例
- c#中的interface abstract virtual override和new
- [C#] 區分 abstract、virtual、override 和 new
- C#中的virtual,abstract,override和new关键字小结
- C#中重写(override)、覆盖(new)、虚拟(Virtual)关键字的区别
- 浅析C#中new、override、virtual关键字的区别
- 温故而知新:new与override的差异以及virtual方法与abstract方法的区别
- 浅谈C#中new、override、virtual关键字的区别