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

                   

  • 相关阅读:
    App测试从入门到精通之安装、卸载和运行测试
    App测试从入门到精通之App分类和场景操作系统
    一步到位带你入门Selenium
    MAMP和WAMP搭建Web环境,数据库,数据分布可视化
    爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍
    Python 基本语法,文件读写,数据结构和类型
    python 数据工程 and 开发工具Sublime
    jieba user guide
    python各类项目模块记录
    python parse xml using DOM
  • 原文地址:https://www.cnblogs.com/fuyouchen/p/9363970.html
Copyright © 2011-2022 走看看