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;
    }

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

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

  • 相关阅读:
    Django中多表的增删改查操作及聚合查询、F、Q查询
    路由控制
    路由、视图、模板主要知识点回顾
    创建文件linux
    关于shell,环境变量放置在?
    snprintf和string操作函数
    C/C++的存储区域的划分
    001
    SAMBA服务器
    归并排序原理详解!
  • 原文地址:https://www.cnblogs.com/zhuqun/p/15722598.html
Copyright © 2011-2022 走看看