zoukankan      html  css  js  c++  java
  • C#中virtual和abstract的区别

    1.virtual修饰的方法必须要有方法体,abstract修饰的方法一定不能有方法体

    public virtual void A()
    {
        ...
    }
    
    public abstract void B();

    2.virtual可以被子类重写,而abstract必须被子类重写

    3.virtual重载可以被new 和 override修饰,而abstract重载只能由override修饰

        public abstract class Test
        {
            public virtual void A()
            {
                Console.WriteLine("Test A...");
            }
            public abstract void B();
        }
    
        public class TestA : Test
        {
            //public override void A()
            //{//    Console.WriteLine("TestA A...");
            //}
    
            //public new void A()
            //{
            //    Console.WriteLine("TestA A...");
            //}
    
            public override void B()
            {
                Console.WriteLine("TestA B...");
            }
        }


    3.如果类成员被abstract修饰,则该类前必须添加abstract,因为只有抽象类才可以有抽象方法。

    4.abstract类只能被继承,不能实例化

    5.C#中如果要在子类中重写方法,必须在父类方法前加virtual,在子类方法前添加override,这样就避免了程序员在子类中不小心重写了父类方法。

  • 相关阅读:
    call,apply和bind的用法及区别
    JavaScript数组去重的方法
    JavaScript原型与原型链
    判断数组的方法
    两栏布局和三栏布局的实现
    小作品
    CSS垂直居中的方法
    闭包实现add(1)(2), add(1,2)的功能
    1.JavaScript的组成
    常用指令
  • 原文地址:https://www.cnblogs.com/xbzhu/p/6769273.html
Copyright © 2011-2022 走看看