C#类详解
类:
类是一种数据结构,它可以包含数据成员(常数和字段)、函数成员(方法、属性、事件、索引器、运算符实例、构造函数静态构造函数和析构函数),以及嵌套类型。类类型支持继承,继承是一种机制,它使派生类可以对基类进行扩展和专用化。
1、 类声明:
属性(可选) 类修饰符(可选) class 标示符 类基(可选) 类体(可选);
2、类修饰符:
类声明可以根据需要包括一个类修饰符序列:
class-modifier(类修饰符):
new
public
protected
internal
private
abstract
sealed
new修饰符适用于嵌套类。它表示所修饰的类会把继承下来的同名成员隐藏起来。
3、抽象类:
abstract:修饰符用于表示所修饰的类是不完整的,并且它只能用做基类。抽象类与非抽象类不同点如下:
抽象类不能直接实例化,并且对抽象类使用new运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
允许抽象类包含抽象成员
抽象类不能被密封
4、密封类:
sealed修饰符用于防止从所修饰的类派生出其他类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体而言,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。
5、基类规范:
类声明可以包含基类规范,它定义该类的直接基类和由该类实现的接口。
class-base:(基类:)
:class-type(:类类型)
:interface-type-list(:接口类型列表)
6、基类:
当类类型包含在类基中时,表示该类就是所声明的类的直接基类。如果类声明中没有基类,或所含有的类基只列出接口类型,就假定直接基类就是object,类会从它的直接基类继承成员。
类类型的直接基类不能是下列类型:System.Array, System.Delegate, System.Enum, System.ValueType。
类的基类包括它的直接基类及该直接基类的基类。
除了类object,每个类有且只有一个直接基类。object类没有任何直接基类,并且是所有其他类的终极基类。
7、接口实现:
类基规范中可以包含接口类型列表,这表示所声明的类实现所列出的各个接口类型。
8、类体:
类体用于定义该类的成员。
class-body:(类体)
{ class-member-declarationsopt }( {类成员声明可选})
9、类成员:
类成员有两部分组成:有它的类成员声明引入的成员;从它的直接基类继承来的成员
class-member-declarations:(类成员声明:)
constant-declaration:(常数声明:)
field-declaration:
method-declaration:
property-declaration:
event-declaration:
indexer-declaration:
operator-declaration:
constructor-declaration:
destructor-declaration:
static-constructor-declaration:
type-declaration:
C#类详解的更多相关文章
- java之StringBuffer类详解
StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...
- java之AbstractStringBuilder类详解
目录 AbstractStringBuilder类 字段 构造器 方法 public abstract String toString() 扩充容量 void expandCapacity(in ...
- java之StringBuilder类详解
StringBuilder 非线程安全的可变字符序列 .该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍).如果可能,建议优先采用该类,因为在 ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- QAction类详解:
先贴一段描述:Qt文档原文: Detailed Description The QAction class provides an abstract user interface action tha ...
- JAVAEE学习——struts2_01:简介、搭建、架构、配置、action类详解和练习:客户列表
一.struts2是什么 1.概念 2.struts2使用优势以及历史 二.搭建struts2框架 1.导包 (解压缩)struts2-blank.war就会看到 2.书写Action类 public ...
- Struts2-整理笔记(二)常量配置、动态方法调用、Action类详解
1.修改struts2常量配置(3种) 第一种 在str/struts.xml中添加constant标签 <struts> <!-- 如果使用使用动态方法调用和include冲突 - ...
- C# 内置 DateTime类详解
C# 内置 DateTime类详解 摘抄自微软官方文档,用来方便自己查阅:网址:https://msdn.microsoft.com/zh-cn/library/system.datetime(v=v ...
- Android游戏开发之旅 View类详解
Android游戏开发之旅 View类详解 自定义 View的常用方法: onFinishInflate() 当View中所有的子控件 均被映射成xml后触发 onMeasure(int, int) ...
- Java 枚举类详解
1. 枚举类定义 在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象,这种实例有限而且固定的类,在Java里被称为枚举类. 2. 早期实现枚举的方式 public static f ...
随机推荐
- swift新特性(__nullable和__nonnull
http://www.mamicode.com/info-detail-923593.html 最近在看老师写代码的时候经常遇到两个陌生的关键字,但是当我在我的电脑上敲得时候就是敲不出,后来才知道这是 ...
- C++通过Callback向C#传递数据,注意问题
转载:出处 现在比较流行C#与C++融合:C#做GUI,开发效率高,C++做运算,运行效率高,二者兼得. 但是C++与C#必然存在数据交互,C#与C++dll的数据交互从来都是一个让人头疼的问题. 从 ...
- python 爬取的数据要如何展现(可视化)?
我是把数据放在 mongodb ,然后单独一个脚本作分析,导出 json ,用 c3.js 画图,然后随便写个很简单的页面就好了. 展示在这里: http://107.170.207.236/job_ ...
- iOS 之 网络 NSURLSession
NSURLSession相比NSURLConnection功能更强大,是更上层的网络封装.相比而言,普通应用场景下NSURLSession没有什么优势,但是,在程序切换到后台的情况下,NSURLSes ...
- IM 融云 之 通讯能力库API
参考:http://www.rongcloud.cn/docs/api/ios/imlib/Classes/RCConversation.html 0. 使用说明 使用该文档注意,每个蓝色标题点击后, ...
- nginx 重启
/etc/init.d/nginx -s reload /etc/init.d/nginx reload
- iOS 之 事件响应者链
响应者链表示一系列的响应者对象.事件被交由第一个响应者对象处理,如果第一个响应者不处理,事件就沿着响应者链向上传递,交由下一个响应者(Next responder). View->ViewCon ...
- 浅谈ServletContext
ServletContext是什么? WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用.ServletConfig对象中维护了Serv ...
- PHP的一些 有用但不常用的函数记录
1. microtime() 当前 Unix 时间戳以及微秒数. <?php $mem = new Memcache; $mem->connect("127.0.0.1" ...
- ThinkPHP URL伪静态、路由规则、重写、生成
一.URL规则 1.默认是区分大小写的 2.如果我们不想区分大小写可以改配置文件 'URL_CASE_INSENSITIVE'=>true,//url不区分大小写 ...