C#编程override、virtual、new、abstract修饰符总结

2012-04-29 10:20:20|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C#|来源:唯设编程网

2.4. 虚方法(virtual)

    虚方法用virtual修饰 ,它们可以在派生类中被重写(override)。 例如,此方法可被任何继承它的类重写。 

    virtual 修饰符不能与 static、abstract, private或 override 修饰符一起使用 

2.5. 封装类(sealed)

    sealed   当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。

2.6. 隐藏(new)

   new 用作修饰符时,new关键字可以在派生类中隐藏基类的方法,也就说在使用派生类的方法是调用的方法是New关键字新定义出来的方法,而不是基类的方法。在 不使用New关键字来隐藏基类方法也是可以的,编译器会出现一个警告,提示如果有意去隐藏基类的方法,请使用New关键字修饰。

注意事项:

  a.New和Override这两个关键字是互斥的。不可以同时使用。

   b.Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名,此关键字不可以用于重写非虚方 法和静态方法,与其配套使用的关键字是Virtual、abstract、Override。与此同时,Override方法还不可以修改Virtual 方法的可访问性,Override方法和Virtual方法必须具有相同的访问修饰符,不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。

3. 具体实例

  下面这个例子讲述了new和 virtual/override 的区别:

        class Program
        {
            static void Main(string[] args)
            {
                contact ct1 = new class1();
                contact ct2 = new class2();
                class2 sp = new class2();

                sp.prinf();
                ct1.prinf();
                ct2.prinf();
            }
        }

        abstract public class contact
        {
            public virtual void prinf()
            {
                Console.WriteLine("这是虚方法");
            }

        }

        public class class1 : contact
        {
            public override void prinf()
            {
                Console.WriteLine("这是个重写的新方法");
            }
        }

        public class class2 : contact
        {
            public new void prinf()
            {
                Console.WriteLine("这是另一个新的方法");
            }
        }

    结果:

    这是另一个新的方法;

    这是个重写的新方法

    这是虚方法
<12>
发表评论0条 】
网友评论(共?条评论)..
C#编程override、virtual、new、abstract修饰符总结