zoukankan      html  css  js  c++  java
  • Partial(部分方法,局部方法),virtual(虚方法),abstract(抽象方法)

      Partial 部分方法顾明思议是方法的一部分,不完整的,在ide编译时候,会将所有部分方法加载到一起统一编译,如果分部方法没有被实现,编译器就不会、对他们进行编译。

    局部类型的限制

    (1) 局部类型只适用于类、接口、结构,不支持委托和枚举。
    (2) 同一个类型的各个部分必须都有修饰符 partial。
    (3) 使用局部类型时,一个类型的各个部分必须位于相同的命名空间中。
    (4) 一个类型的各个部分必须被同时编译。

    3. 局部类型的注意点

    (1) 关键字partial是一个上下文关键字,只有和 class、struct、interface 放在一起时才有关键字的含义。因此partial的引入不会影响现有代码中名称为partial的变量。
    (2) 局部类型的各个部分一般是分开放在几个不同的.cs文件中,但C#编译器允许我们将他们放在同一文件中。

    4. 局部类型的应用特性

    在局部类型上的特性具有“累加”效应。
    [Attribute1, Attribute2("Hello")]
    partial class Class1{}

    [Attribute3, Attribute2("Exit")]
    partial class Class1{}

    相当于
    [Attribute1, Attribute2("Hello"), Attribute3, Attribute2("Exit")]
    class Class1 {}

    注:Attribute2属性允许在类上多次使用。

    5. 局部类型上的修饰符

    (1) 一个类型的各个部分上的访问修饰符必须维持一致性。
    (2) 如果一个部分类使用了abstract修饰符,那么整个类都将被视为抽象类。
    (3) 如果一个部分类使用了 sealed 修饰符,那么整个类都将被视为密封类。
    (4) 一个类的各个部分不能使用相互矛盾的修饰符,比如不能在一个部分上使用abstract,又在另一个部分上使用sealed。
    (5)如果一个部分类使用了 static修饰符,那么整个类都将被视为静态类
     
     
    Virtual 虚方法
    首先虚方法是延迟加载的,这点需要注意
     
    1.虚拟成员的实现可由派生类中的重写成员更改

    调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。

    默认情况下,方法是非虚拟的。不能重写非虚方法。

    virtual 修饰符不能与 staticabstract, private 或 override 修饰符一起使用。

    除了声明和调用语法不同外,虚拟属性的行为与(abstract)抽象方法一样。

    • 在静态属性上使用 virtual 修饰符是错误的。

    • 通过包括使用 override 修饰符的属性声明,可在派生类中重写虚拟继承属性。

     
     
    什么时候该用Virtual 什么时候用abstract 呢?
    abstract是标示一个可以扩展但不能实体化,必须别实现的类或方法,声明一个abstract 时候抽象想法里面是没有具体实现的,虚方法中可以有原始实现,
    abstract方法必须在派生类中重写,而virtual则不必,
    abstract方法只能在抽象类中声明,虚方法则不是 
    abstract方法不能声明方法实体,
    abstract public void AAA();
    虚方法则可以
    public virtual void BBB()
    {
    Console.WriteLine("A");
    }
    虚方法可以实现多态,而抽象方法不可以。。。
     
     
     
     
     
  • 相关阅读:
    《瓦尔登湖》读书随笔
    Ubuntu下nginx+uwsgi+flask的执行环境搭建
    Android studio SweetAlert for Android
    mysql 主从不同步处理--数据库初始化
    Nginx学习——http配置项解析编程
    支付宝集分宝接口开发的相关问题解答
    解读刘强东关于人才的两个标准和5个层次
    oc35--自定义构造方法
    oc34--instancetype和id的区别
    oc33--构造方法2
  • 原文地址:https://www.cnblogs.com/yiliuyang/p/5770157.html
Copyright © 2011-2022 走看看