1.静态成员:  

  静态成员(static)、静态类与实例成员、类:

  静态成员属于类所有,非静态成员属于类的实例所有。
  静态成员不能标记为 Virtual,Abstract,Override,也就是说静态成员不能实现多态。
  静态成员创建后始终使用同一块内存(静态存储区),而使用实例成员的方式会创建多个内存。
  静态类中只能声明静态方法和静态字段,静态方法只能访问静态成员变量。
  由于静态成员是在整个程序退出时,才释放资源,所以尽量避免写静态字段或静态属性,最好只写静态方法。
  当一个普通的类中有静态成员时,系统会默认添加一个静态的构造函数。
  静态的构造函数,只会在第一次使用静态成员之前执行。并只执行一次,不管以后是否多次使用静态成员。
  静态构造函数就是在该类名前加一个Static。
  静态的构造函数不能有访问修饰符、并且也不能带参数。
  静态成员就相当于Abstract和Sealed的结合体。
    静态类不能被继承,静态类不能实现任何接口。 

  什么时候使用静态成员?
    当多个对象共享同一个数据的时候就可以在实例类中加入静态成员。

  什么时候使用静态类?
         1.当这个类是一个工具类,里面都是方法,为了让用户调用的时候方便。(例如:系统中的convert、Math就是静态成员)
         2.模拟“全局变量”的时候。例如:人类,每个人都是一个对象。而所有的人都居住在同一个星球----地球上

2.简单的介绍一下密封成员(Sealed)

  密封类(sealed) ,是不能被继承的,密封方法。
  在一个子类的重写方法前加上sealed关键字,这样这个方法以后就不能再重写了。
  什么时候用密封类?
  1.像String类,在.net系统中本身对字符串有很多特殊处理,为了防止别的类继承后造成混乱。
  2.关于一些商业的问题,不想让别人知道你内部的信息。

3.抽象成员

  抽象成员与抽象类:

  1. 抽象方法不能有任何方法体。用Abstract来标记。
  2. 抽象成员必须包含在抽象类中,不能写在一个实例类中。
  3. 父类中的抽象成员,子类继承必须重写,除非子类也是抽象类。
  4. 抽象类是不能被实例化的。
  5. 抽象成员访问修饰符不能是Private.
  6. 抽象类中可以包含实例成员。因此抽象类中有构造函数,虽然不能实例化。
  7. 抽象类就是为了让子类继承。(来实现多态),它定义的就是公共的实现和能力。
  8. 抽象方法不能用Static来修饰。
  9. 抽象类可以用来实现接口

  抽象方法与虚方法使用时的区别:

  1. 如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态。
  2. 如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。

  注意:

    1.抽象属性虽然与自然属性一样的写法,但不是同一种东东,抽象的属性必须在子类中重写。属性、索引器也是另一种方法的表现形态
    2.如果子类中某一个方法与父类中某一个方法相同,如果不是用Override重写的,那么就要在前面加一个new,表示在子类中写了一个全新的方法,与父类没有关系。

4.接口(Interface)  

定义:接口就是统一的规范,以I开头命名,以Able作结尾。

  接口的使用:

  1. 接口中只能包含方法(方法、属性、索引器、事件),并且方法中不能有任何方法实现。因此接口中没有构造函数,并且不能被实例化。
  2. 接口中的成员不能有任何的访问修饰符,默认是Public。
  3. 当一个类同时继承了某个类,并且也实现了一个或多个接口时候,必须把继承的类写在第一个位置。
  4. 实现接口的类,必须实现接口中的所有成员,抽象类也可以实现接口。
  5. 类与接口是实现关系,而不是继承,因为接口就是规范。可以把接口理解成类的父类。
  6. 接口与接口之间也是可以有(继承)的关系的
  7. 在实现接口的时候可以把接口中的方法修改为Virtual或Abstract.

  建议:在接口中不要写太多的方法。可以把多个方法分别写到各个接口中,要避免接口的污染。(例如:古代的活字印刷术有些相似)。

  注意:

        1.在计算机中就算类中已经把接口的那些规范都实现了,但没有继承接口,这样是错的,因为在计算机中必须实现接口,才能保证实现了这些规范。
    2.在扩展原功能要修改原文件,修改原文件就会看到原代码,因此在写程序的时候要注意不要出现这个问题,要把变化的东东封装起来。我们要面向父类、面向接口编程。
    3.能够写实例成员的类中一定就会有构造函数。

  接口的好处:

  1. 解决了类的多继承的问题。
  2. 解决了类继承以后体积庞大的问题。

  显示实现接口:

  1. 访问修饰符是Private.(根据反编译得到的)目地就是防止类来调用。
  2. 只有用接口才能调用。
  3. 接口名.方法名();并且没有访问修饰符。
  4. 并且能更好的解决方法重名的问题。

C#基础篇--静态成员、抽象成员、接口的更多相关文章

  1. Java基础---继承、抽象、接口

    一.概述         继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多个类可以称为子类,单 ...

  2. java学习笔记(基础篇)—抽象与接口的区别

    抽象与接口的区别 一.抽象(abstract) 1. 抽象方法 1) 作用:定义规范 2) 抽象方法用来描述具有什么功能,但不提供实现. 3) 如果类中一个方法没有实现就要定义一个抽象方法. 2. 抽 ...

  3. 《Java基础——抽象与接口》

    Java基础--抽象与接口       一.抽象: 规则: 关键字 abstract 修饰的类称为抽象类. 子类通过关键字extends实现继承. 关键字 abstract 修饰的方法称为抽象方法,抽 ...

  4. JAVA经常使用集合框架使用方法具体解释基础篇二之Colletion子接口List

    接着上一篇,接着讲讲集合的知识.上一篇讲了Collection接口.它能够说是集合的祖先了,我们这一篇就说说它的子孙们. 一.Collection的子接口 List:有序(存入和取出的顺序一致).元素 ...

  5. Java面试题之基础篇概览

    Java面试题之基础篇概览 1.一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,且public的类名必须与文件名相一致. 2.Ja ...

  6. 小白—职场之Java基础篇

    java基础篇 java基础 目录 1.java是一种什么语言,jdk,jre,jvm三者的区别 2.java 1.5之后的三大版本 3.java跨平台及其原理 4.java 语言的特点 5.什么是字 ...

  7. [ Java学习基础 ] Java的抽象类与接口

    一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...

  8. [ Java面试题 ]基础篇之一

    1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...

  9. Python 经典面试题汇总之基础篇

    基础篇 1:为什么学习Python 公司建议使用Python,然后自己通过百度和向有学过Python的同学了解了Python.Python这门语言,入门比较简单,它简单易学,生态圈比较强大,涉及的地方 ...

随机推荐

  1. Circular placeholder reference 'jdbc.driver' in property definitions

    Caused by: java.lang.IllegalArgumentException: Circular placeholder reference 'jdbc.driver' in prope ...

  2. css 实现旋转八卦图

    虽然这不算什么亮点,不过也可以供路上的小伙伴学习下 直接上干货: <!doctype html> <html lang="en"> <head> ...

  3. Rookey.Frame v1.0极速开发平台稳定版发布

    Rookey.Frame v1.0经过一年时间的修改及沉淀,稳定版终于问世了,此版本经过上线系统验证,各个功能点都经过终端用户验证并持续优化,主要优化以下几个方面: 1.性能较原来提升3倍之多 2.修 ...

  4. [.NET产品源码保护].NET防止反编译(非混淆加密)

    .NET产品源码保护产生的背景: .NET源码加密方案支持C#及VB.NET等语言开发的ASP.NET及WINFORM应用.利用.NET支持托管代码与非托管代码共存的特性,将C#代码经过处理放于非托管 ...

  5. java多线程基本概述(二十)——中断

    线程中断我们已经直到可以使用 interrupt() 方法,但是你必须要持有 Thread 对象,但是新的并发库中似乎在避免直接对 Thread 对象的直接操作,尽量使用 Executor 来执行所有 ...

  6. mpu6050参数获取

    MPU6050其实就是一个 I2C 器件,里面有很多寄存器(但是我们用到的只有几个),我们通过读写寄存器来操作这个芯片.所以首要问题就是 STM32 和 MPU6050 的 I2C 通信.1.配置 S ...

  7. WPF 杂谈——入门介绍

    对于WPF的技术笔者是又爱又恨.现在WPF的市场并不是很锦气.如果以WPF来吃饭的话,只怕会饿死在街头.同时现在向面WEB开发更是如火冲天.所以如果是新生的话,最好不要以WPF为主.做为选择性来学习一 ...

  8. 某公司HP-EVA4400数据丢失的恢复方法和恢复全过程

    一.故障描述1.设备清单一台HP-EVA4400控制器(型号:AG638-53011)三台HP-EVA4400扩展柜(型号为AG638-63001),和28块HP-FC磁盘(型号为300G FC硬盘) ...

  9. focus、blur事件的事件委托处理(兼容各个流浏览器)

    今天工作中遇到个问题,问题是这样的,一个form表单中有比较多的input标签,因为form中的input标签中的值都需要前端做客户端校验,由于本人比较懒而且特不喜欢用循环给 每个input元素添加b ...

  10. SpringMVC结合ajaxfileupload文件无刷新上传

    jQuery没有提供ajax的文件上传,我们可以通过ajaxfileupload实现ajax文件的上传.其实ajaxfileupload文件上传特别的简单.下面就演示一下在SpringMVC中实现aj ...