zoukankan      html  css  js  c++  java
  • c# Interface, virtual , abstract, partial 总结

    菜鸟开始上路了..

    学习C#或者面试经常会遇到关于interface abstract class ,vitual method 等异同点,为此总结一下帮助记忆:

    Virtual :用于方法声明时,不能用于class 声明时,这与abstract 不同

    Virtual 和abstract 都能用于方法的声明,但是是virtual 和abstract 不能同时使用修饰方法

    Abstract 方法只能包含在abstract class中,而且abstract 方法不能有方法体,必须一定在继承类中实现。

    Abstract, extern , partial 表示的方法 可以不包含method body,其他的方法 必须包含方法体,partial 声明的方法必须返回void,且必须在partial 的class 或者struct 中

    Virtual 方法可以包含在abstract class 和普通class 中,必须拥有方法体,如果有返回值时 方法必须有返回值,它是一个虚方法,直到声明一个类的实例之前,它都不存在于真实的内存空间中

    partial:再3.0之前修饰class,再3.0开始可以修饰class 和method,partial method 只能包含在partial class 或者partial struct中。 partial class 可以有两个或以上

    partial method 包含两部分,一部分为定义(defining),一部分是实现,定义中不能包含方法体, 实现部分必须包含方法体

    partial method 必须为void 返回值,并且不能有out 输出参数

    partial method 只能用 unsafe and static 两个修饰符修饰

    Interface 和 abstract class

    抽象类是一个不完全的类,是对对象的抽象,而接口是一种行为规范。

    Abstract class  不能创建实例,继承abstract class 时,其中的虚方法必须被重写(如果继承abstract class 子类 依然是abstract class,那么可以不实现abstract method),而vitual 方法可以不被重写,而且虚方法的方法体可以被执行。如果virtual method被重写了那么在执行时将调用重载后的方法,这是继承和多态

    Interface

    声明时可以使用访问限制符(public,private…),但是其中包含的方法不能使用访问限制符,方法不能包含方法体,这与抽象方法(abstract method)相同

    Interface 中可以包含Property如(int Age { get; set; }),但是不能包含field(字段),并且方法和属性都不能用访问限制符号来修饰,他们继承interface 的访问限制,方法和属性不能同时用abstract 等符号修饰

    Interface 不能有构造函数,但是abstract class 有构造函数

    Interface 被继承时其中的方法都必须被实现,这与abstract class 相同

    Interface 可以被interface 继承,就是接口能继承与接口,如:

    public interface MyInterface2 : MyInterface
        { }

    Interface 中的属性和方法必须在类中实现,即implement,implement是不能使用override关键字,override 关键字用于virtual和abstract method 的重写, 而interface中的方法和属性直接定义相同的即可implement

  • 相关阅读:
    SDN第二次作业
    事后诸葛亮
    SDN第一次上机作业
    个人作业——软件产品案例分析
    SDN第一次作业
    Alpha冲刺总结报告
    Alpha冲刺Day10
    Alpha冲刺Day9
    Alpha冲刺Day8
    Alpha冲刺Day7
  • 原文地址:https://www.cnblogs.com/anthonyBlog/p/2631398.html
Copyright © 2011-2022 走看看