C Sharp中的Virtual、Override和new关键词理解
来源:互联网 发布:万网独立域名管理 编辑:程序博客网 时间:2024/05/01 12:39
在 C# 中,派生类可以包含与基类方法同名的方法。
- 基类方法必须定义为 virtual。
- 如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警告,该方法将有如存在 new 关键字一样执行操作。
- 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。
- 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。
- 可以从派生类中使用 base 关键字调用基类方法。
- override、virtual 和 new 关键字还可以用于属性、索引器和事件中。
using System;using System.Collections.Generic;public class Car{ public virtual void DescribeCar() { Console.WriteLine("Base Car!"); }}public class ConvertibleCar : Car{ public new void DescribeCar() { base.DescribeCar(); Console.WriteLine("Convertible Car!"); }}public class DerivedConvertibleCar : ConvertibleCar{ public new void DescribeCar() { base.DescribeCar(); Console.WriteLine("DerivedConvertibleCar Car!"); }}public class DerivedMinivan : Minivan{ public override void DescribeCar() { base.DescribeCar(); Console.WriteLine("DerivedMinivan Car!"); }}public class Minivan : Car{ public override void DescribeCar() { base.DescribeCar(); Console.WriteLine("Minivan Car!"); }}public class CarCollections{ public static void Main() { Listcars = new List (); cars.Add(new Car()); cars.Add(new ConvertibleCar()); cars.Add(new Minivan()); cars.Add(new DerivedConvertibleCar()); cars.Add(new DerivedMinivan()); foreach (Car car in cars) car.DescribeCar(); }}
输出结果:
Base Car!【Car】
Base Car!【ConvertibleCar】
Base Car!
Minivan Car!【Minivan】
Base Car!【DerivedConvertibleCar】
Base Car!
Minivan Car!
DerivedMinivan Car!【DerivedMinivan 】
可以看到使用new和使用override的效果是不一样的。
- C Sharp中的Virtual、Override和new关键词理解
- C#中的三个关键词new , virtual , override
- 理解c#中的interface abstract virtual override和new(转)
- 我理解c#中的interface abstract virtual override和new
- 谈谈C#中的三个关键词new , virtual , override
- 谈谈C#中的三个关键词new , virtual , override
- 谈谈C#中的三个关键词new , virtual , override
- 谈谈C#中的三个关键词new , virtual , override
- C#virtual override new
- Virtual、override和new
- C#virtual,override,new学习
- c#virtual,abstract,new,override
- abstract、virtual、override 和 new
- abstract、virtual、override 和 new
- c#中的interface abstract virtual override和new
- c#中的interface abstract virtual override和new
- C#中的virtual,abstract,override和new关键字小结
- c#关键词 virtual、override、new、abstract、sealed的用法
- 突然........
- FOJ_1002_HangOver
- 时间概念 — 24时区、GMT、UTC的意涵
- 黑客黑了一百万台电脑 赢得一份工作
- 软件工程硕士:未来十大金领职业之一
- C Sharp中的Virtual、Override和new关键词理解
- epoll精髓
- 项目组成员相处之道
- JAVA解惑---String创建了几个对象
- C#中随机数的产生
- 关于使用MySql乱码问题
- 小蜗牛的故事
- C#中加强ListView控件的功能
- Java中类的初始化顺序