C# Foundation---keyword: abstract & virtual & new & override

  1 using  System;
  2 using  System.Collections.Generic;
  3 using  System.Text;
  4
  5 namespace  CSharpFoundationStudy
  6 {
  7    /*
  8     * abstract virtual new override 关键字
  9     * abstract 修饰符可以用于类、方法、属性、事件和索引器,表示其为抽象成员
 10     * abstract 不可以和 static 、virtual 一起使用
 11     * 声明为 abstract 成员可以不包括实现代码,但只要类中还有未实现的抽象成员(即抽象类),那么它的对象就不能被实例化,通常用于强制继承类必须实现某一成员
 12     * 
 13     * 如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖。
 14     * 如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏。
 15     * 如果子类实现了父类相同的方法(相同的方法名称及签名),而没有new,在编译时会报警,但编译仍然能够通过!
 16     * 调用父类方法:base.方法名()
 17     * abstract类是一个抽象类,不能被实例化
 18     */

 19
 20    抽象基类
 49
 50    继承类
118
119    public class Test
120    {
121        public static void OnFunction(object sender, EventArgs e)
122        {
123            /*
124             * From: http://www.cnblogs.com/anytao/  [你必须知道的.NET] 第一回:恩怨情仇:is和as
125             * as VS is 类型安全
126             * 类型转换包括显示转换和隐式转换,在.NET中类型转换的基本规则如下:
127             *    任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成;
128             *    任何类型转换为其派生类型时,必须进行显示转换,转换的规则是:(类型名)对象名;
129             *    使用GetType可以取得任何对象的精确类型;
130             *    基本类型可以使用Covert类实现类型转换;
131             *    除了string以外的其他类型都有Parse方法,用于将字符串类型转换为对应的基本类型;
132             *    值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing)。
133             * 
134             * is/as操作符,是C#中用于类型转换的,提供了对类型兼容性的判断,从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制
135             * is的规则如下:
136             *    检查对象类型的兼容性,并返回结果,true或者false;
137             *    不会抛出异常;
138             *    如果对象为null,则返回值永远为false。
139             * 
140             * as的规则如下:
141             *    检查对象类型的兼容性,并返回结果,如果不兼容就返回null;
142             *    不会抛出异常;
143             *    如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。
144             */

145            DerivedInstance instance = sender as DerivedInstance;
146            if (instance != null)
147            {
148                for (int i = 0; i < instance.Attribute.Length; i++)
149                {
150                    Console.WriteLine(instance[i]);
151                }
  
152            }

153        }

154        public static void Main()
155        {
156            DerivedInstance instance = new DerivedInstance();
157            instance.Event += new EventHandler(OnFunction);
158            instance.GFunction("simply-zhao 2008/1/20");
159            instance.VFunction("simply-zhao 2008/1/20");
160            instance.AFunction("simply-zhao 2008/1/20");
161            Console.ReadLine();
162        }

163    }

164}

165

你可能感兴趣的:(override)