1 / 34
文档名称:

项目八继承与多态——提高开发效率的妙招.doc

格式:doc   页数:34页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

项目八继承与多态——提高开发效率的妙招.doc

上传人:ZRydVIFv 2015/3/11 文件大小:0 KB

下载得到文件列表

项目八继承与多态——提高开发效率的妙招.doc

文档介绍

文档介绍:项目八继承与多态——提高开发效率的妙招
C#
程序设计
项目教程
计算机“十二五”规划教材
项目八
C#
程序设计项目教程
项目八继承与多态
——
提高开发效率的妙招
学****任务
??理解继承的含义,掌握实现继承的方法。
??继承关系中构造函数的执行顺序。
??理解多态的含义,掌握实现多态性的方法。
C#
程序设计项目教程
任务安排
任务一学****继承

任务二

学****类的多态性

项目八继承与多态
——
提高开发效率的妙招
C#
程序设计项目教程
任务一学****继承
任务说明
预备知识
继承是面向对象理论中最重要的一种机制,继承为应用程序提供了强大的扩充能力,在本任务中我们就来学****继承的相关知识。
一、继承的含义及实现
继承是在类之间建立一种传承关系,通过继承一个现有的类,新创建的类不需要撰写任何程序代码便可以直接拥有所继承类的功能,同时还可以创建自己的专有功能,建立起类的新层次。其中,创建的新类称为
派生类或子类
,被继承的类称为
基类或父类
。实现继承的语法格式为:
C#
程序设计项目教程
[
访问修饰符
] class <
派生类名
>:<
基类名
> //
用冒号来实现类之间的继承
{
<
派生类中新成员的声明
>
}
子类继承自父类后,子类从它的直接父类中隐式继承了允许继承的成员。即只有被“
public
”、“
protected
”和“
internal
”访问修饰符修饰的成员可以被继承,这些成员包括字段、属性、方法、索引器等,但
不包括构造方法和析构方法

C#
中类的继承机制具有以下两个特点:

传递性

单一性
C#
程序设计项目教程
二、继承中构造函数的执行
在继承关系中构造函数的执行遵循以下
两条
基本原则:
1
1>.派生类构造函数
自动调用
基类
不带参
数的
构造函数

(
1
)如果基类没有自定义构造函数,派生类定义构造函数,则全部采用默认的构造函数(若类内没有定义构造函数,系统会自动隐式生成一个不带参数的构造函数)。如果只有派生类自定义了构造函数,只需构造派生类对象即可,对象的基类部分使用默认构造函数来自动创建。
(
2
)在基类中声明一个无参数的构造函数来替换默认的构造函数,那么它可以隐式地被派生类调用。
2
.基类中
带参
数的
构造函数

须显式调用

C#
程序设计项目教程
三、从派生类访问基类成员
与调用基类构造函数类似,在
C#
中,派生类通过
base
关键字
访问基类的成员,但读者需要注意派生类无权访问基类中的
private
成员,并且在静态方法中不能使用
base
关键字。
namespace
MyCat
{class Program
{ static void Main(string[]
args
)
{ Cat
cat
= new Cat(); //
声明一个猫的对象


(); }
}
class Animal //
声明
Animal
(动物)基类
{ public void Shout()
{

(;
动物叫!
;); }
}
class Cat : Animal //
声明
Cat
(猫)派生类
{ public void
CatShout
()
{

(); //
在派生类中调用基类的
Shout
方法


(;
我是小猫喵喵叫!
;); }
}
}
C#
程序设计项目教程
四、隐藏基类成员
密封类在类的声明中以
sealed
修饰。密封类不能有派生类,使用密封类可以防止对类的继承。
abstract class A //
抽象类
A
{
public abstract void F( ) ; //
抽象类
A
中的抽象方法
}
sealed class B: A //
密封类
B
继承抽象类
A
{
public override void F( ) //
在派生类
B
中重写抽象类
A
中的抽象方法
{ // F
的具体实现代码
}
}
如果尝试编写下面的代码:
class C: B{ } //
错!类
B
是密封类,密封类不能被继承
(一)使用密封类隐藏基