zoukankan      html  css  js  c++  java
  • 抽象类和虚方法、base关键字

    微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/abstract-and-sealed-classes-and-class-members

    抽象类和类成员

    通过在类定义前面放置关键字 abstract,可以将类声明为抽象类。 例如:

    public abstract class A
    {
        // Class members here.
    }

    抽象类不能实例化。 抽象类的用途是提供一个可供多个派生类共享的通用基类定义。 例如,类库可以定义一个抽象类,将其用作多个类库函数的参数,并要求使用该库的程序员通过创建派生类来提供自己的类实现。

    抽象类也可以定义抽象方法。 方法是将关键字 abstract 添加到方法的返回类型的前面。 例如:

    
    
    public abstract class Animal
    {
        public abstract void Call();   //无方法体
        public virtual void Bak()   //有方法体
        {
            Console.WriteLine("jiaojiao");
        }
        public Animal(int id)
        {
            Console.WriteLine(id);
        }
     
    }
     
    public class Dog : Animal
    {
        
        public override void Call()   //重写抽象方法
        {
            
        }
        public override void Bak() //重写虚方法
        {
            Console.WriteLine("goujiao");
            // base.Bak();
        }
        public Dog(int id) :base(id) //调用父类的Animal.Animal(id) 方法
        {
     
        }
     
    }
     

    虚方法

    在 C# 中,派生类可以包含与基类方法同名的方法。

    • 基类方法必须定义为 virtual

    • 如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警告,该方法将如同存在 new 关键字一样执行操作。

    • 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。

    • 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。

    • 可以从派生类中使用 base 关键字调用基类方法。

    base关键字

                    base其实最大的使用地方在面向对象开发的多态性上,base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法

                    关于base
                        base 关键字用于从派生类中访问基类的成员:
                        调用基类上已被其他方法重写的方法。
                        指定创建派生类实例时应调用的基类构造函数。
                        基类访问只能在构造函数、实例方法或实例属性访问器中进行。
           

                   

  • 相关阅读:
    转载:稳定性,鲁棒性和非脆弱性的精辟解读
    BZOJ 2806: [Ctsc2012]Cheat(单调队列优化dp+后缀自动机)
    CF 235C. Cyclical Quest(后缀自动机)
    BZOJ 5137: [Usaco2017 Dec]Standing Out from the Herd(后缀自动机)
    2019/2/28 考试记录
    后缀自动机的应用
    CF 452E. Three strings(后缀数组+并查集)
    BZOJ 2281: [Sdoi2011]黑白棋(dp+博弈论)
    CF 39E. What Has Dirichlet Got to Do with That?(记忆化搜索+博弈论)
    LUOGU P4783 【模板】矩阵求逆(高斯消元)
  • 原文地址:https://www.cnblogs.com/fuyouchen/p/9363970.html
Copyright © 2011-2022 走看看