用户操作
[即时聊天] [发私信] [加为好友]
张洪伟ID:Jackiezhw
12613次访问,排名9547,好友0人,关注者0人。
Jackiezhw的文章
原创 28 篇
翻译 0 篇
转载 8 篇
评论 0 篇
最近评论
文章分类
收藏
    相册
    Java Techonology
    BlogJava上圆月弯刀的Blog
    Java 调试平台
    自我成长
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 C Sharp中的Virtual、Override和new关键词理解收藏

    新一篇: C++私有继承和保护继承-转载 | 旧一篇: 我要学习的技术

    在 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()
        {
            List cars = 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的效果是不一样的。

    发表于 @ 2008年07月18日 20:20:00|评论(loading...)|编辑|收藏

    新一篇: C++私有继承和保护继承-转载 | 旧一篇: 我要学习的技术

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © Jackiezhw