zoukankan      html  css  js  c++  java
  • C#关键字static、virtual和abstract笔记


    static 静态
    可修饰类、类的构造函数,类的成员等;

    [访问修饰符] static class 类名
    {
    //类的成员
    }

    static 静态函数构造名()
    {
    //语句
    }

    [访问修饰符] static 数据类型 数据成员

    应用场景:类、类的构造函数或类的成员所引用或操作的信息与类有关,而与类的实例无关时

    作用:
    静态构造函数会自动调用,实现静态数据成员初始化
    静态类不必实例化直接就可以调用静态成员,实现更简单,迅速

    特点:
    静态成员属于类,只能通过类来访问
    静态数据成员不需要类实例化就已经分配内存空间
    静态构造函数只调用一次
    静态方法不能用代表当前实例的this关键字,也不能访问实例成员或调用实例方法
    静态类不能实例化不能被继承
    静态类仅包含静态成员
    virtual 虚拟
    可修饰方法,属性等,与覆盖override配合使用

    [访问修饰符] virtual 返回值类型 方法名([参数列表])
    {
    //语句
    }

    [访问修饰符] virtual 数据类型 属性名
    {
    //属性体
    应用场景:派生类需要重载从基类继承的方法和属性实现多态性

    作用:
    重载虚拟的基类成员,实现类多态性
    根据对象所引用的实例,来自动调用覆盖前和覆盖后的方法
    特点:
    字段不能虚拟
    使用sealed override(密封覆盖)可以停止虚拟继承
    Override是覆盖不是替换,覆盖可调用覆盖前的方法
    派生类可以不重载基类的虚方法
    abstract 抽象
    可修饰类,方法,属性等,派生类使用override重载

    public abstract class 抽象类名
    {
    [访问修饰符] abstract 返回值类型 方法名([参数列表]);
    }

    public abstract 数据类型 属性名
    {
    get;
    set;
    }

    应用场景:需要统一、规范派生类方法或属的声明格式

    作用:
    提供多个派生类可共享的基类的公共定义
    抽象方法没有方法体,只用来让派生类重写
    抽象属性不提供具体实现,只声明数据类型、名字、可访问性等,具体实现代码留给派生类
    特点:
    抽象类不能直接实例化
    抽象成员必须在抽象类中声明,抽象类中可以有非抽象成员
    抽象类不能是静态或密封的
    抽象成员没有具体实现,派生类必须重载基类的抽象成员

  • 相关阅读:
    Coursera机器学习week11 单元测试
    关于 TypeReference 的解释
    getModifiers 方法解释。
    instanceof isInstance isAssignableFrom 比较
    elasticsearch 基础 语法总结
    kibana 启动 关闭 和进程查找
    MD5 SHA1 SHA256 SHA512 SHA1WithRSA 的区别
    spring boot 项目 热启动
    java zip 压缩文件
    Packet for query is too large (1660 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
  • 原文地址:https://www.cnblogs.com/zhuqun/p/15722598.html
Copyright © 2011-2022 走看看