1、继承
继承的作用在于代码的重用,子类可以除了可以访问定义在基类中可访问的成员外,还可以额外定义自
己特有的成员。如果我们在定义类的时候没有指定父类,那就以为着这个类派生自Object类,Object类是所
有类的基类。
继承的两种模型
经典继承 (is-a)关系
包含/委托 继承 (has-a)关系
经典继承的语法
语法 class A :class B
{
}
A 称为子类 B就称为基类或者父类。
一个基类可以有多个子类,但是一个类只能有一个父类,C#并不支持多重继承,c#通过接口的概念来实
现相似的功能
继承中的几个关键字
this:表示当前对象即自己
base:表示自己的父类,可以通过base关键字来访问父类中的成员。
sealed : 这个关键字指示类不能被继承,即不能派生出其他的子类。c#中的结构就是隐式使用了这个
关键字。
virtual: (虚方法)使用这个关键字来修饰方法,表示子类可以通过重写这个方法的实现逻辑,这样
就可以实现同一个父类方法在多个子类中的实现逻辑不相同,
override: 子类在重写父类中用virtual修饰的方法时,必须使用override关键字,指示这个方法时重
写了父类的方法
as: 用来快速判断某个类型是否和另一个类型相兼容,不兼容则返回一个null
is: 也用于类型兼容性检测,如果不兼容,则返回一个false。
子类和父类的相互转换
子类可以隐式转换为父类,但是父类不能隐式转换成子类,如果我们需要将一个父类存储到一个子类对
象中,我们必须执行强制转换,强制转换可能失败,会带来异常。所以在强制转换前,必须由程序员来控制
该父类对象是否能转换成一个子类对象。
包含/委托 继承 (has-a)关系
这种类型可以简单理解成类的嵌套。即在一个类的定义中定义另外一个类。
语法 class A
{
class B
{
}
}
注意,这种情况下,B是可以访问A中的私有成员的,在经典继承模型中,子类是不能访问父类中的私有
成员的。
2、异常
c#中的异常处理机制称为结构化异常处理 SEH structred exception handing 它的作用在于提供了
一种标准的技术来发送和捕获运行时的异常,并提供给用户比较友好的错误信息。
c#中异常处理的4个要素
(1)一个包含异常详细信息的类类型
(2)一个引发异常类实例的成员
(3)调用者的一段调用异常类型的代码块
(4)调用者的一段处理将要发生异常的代码块
例
public void methodA()
{
try
{
int i = Convert.ToInt32("abc");
}
catch (Exception ex)
{
}
}
上面的代码块中 一个包含异常详细信息的类类型 指得就是catch中的Exception类型的一个对象ex
一个引发异常类实例的成员 指的就是methodA方法所在的对象
调用者的一段调用异常类型的代码块 指的就是try代码块中的代码块
调用者的一段处理将要发生异常的代码块 指的就是catch代码块中的的我们要如何处理
异常的代码,我们可以在代码块中使用ex的相应属性来获取我们需要的异常信息。
注意 Exception 是c#中所有异常类型的基类,我们可以通过继承它来定义自己的异常类型,通过配置相
应的属性来编写我们自己的异常信息。
如何引发和获取异常
使用 try
{
}
catch
{
}
语句来引发和捕获异常。将可能导致异常发生的代码放在try代码块中。
Windows Phone 7手机开发、 .Net培训、期待与您交流!