周未面向对象(c#)的培训!
培训笔记整理如下:
面向对象编程
基本概念
封装、继承、多态
封装:
private
protected
public
internal protected程序内部(ASSEMBLE)访问。或继承的类
internal 程序内部(ASSEMBLE)访问。
继承:所有类从System.Object
类继承
接口继承
多态:
Abstract 虚类,抽象类不能被实例化
virtual 虚函数,第一次定义
override 第二以继承以后用
重要性
那种特性最重要? 多态
面向对象扩展概念
接口
特点:类似于纯虚类;只有定义,没有实现;允许多重继承
通常的特点:可以直接赋值,无需转化
.net支持:as操作符度
属性
只读、只写、可读写
属性允许有static/virtual/override/abstract
索引器
类似于属性,举例
public SQLTableInfo this[int i]
{
get
{
return (SQLTableInfo)(List[i]);
}
set
{
List[i] = value;
}
}
public SQLTableInfo this[string s]
{
get
{
foreach (SQLTableInfo tableInfo in this)
if (tableInfo.TableName == s)
return tableInfo;
return null;
}
}
同样可以有static/virtual/override/abstract
委托(delegate)和事件(event)
委托相当于函数指针,和函数指针不同的是:1)类型安全;2)支持多个,而不是单个
public delegate void FieldInfoEventHandler(object sender, FieldInfoEventArgs e);
事件是定义在类中,是一种特殊的delegate。使用方法:
public event FieldInfoEventHandler SetFieldInfo;
protected virtual void OnSetFieldInfo(FieldInfoEventArgs e)
{
if (SetFieldInfo != null)
SetFieldInfo(this, e);
}
internal void GetFieldInfo(UpdateKind updateStatus)
{
foreach (FieldInfo fieldInfo in FieldInfos)
{
if (IsKeyField(fieldInfo.FieldName))
fieldInfo.Flags = ProviderFlag.Update | ProviderFlag.Where;
else
fieldInfo.Flags = ProviderFlag.Update;
OnSetFieldInfo(new FieldInfoEventArgs(fieldInfo, updateStatus));
}
}
异常
必须从System.Exception继承。抛出方法throw new Exception();