l封装的好处
Ø良好的封装能够减少耦合
Ø类内部的实现可以自由地修改
Ø类具有清晰的对外接口
 
l封装性最有用的方式之一
l实现方法——访问限制修饰符
Øpublic 无限制,允许任何人来访问
Øprotected internal  = protected + internal
ØInternal 允许项目或程序内部的类来访问
Øprotected 继承时子类可以对基类有完全访问权
Øprivate 只允许同一个类中的成员访问
l属性和索引器也用来封装类的细节,并提供公用接口给该类的用户
 
l一个类可以有能力直接从另一个类获得其代码和数据
l派生类从基类那里获得其所有的成员
l例:
GUI设计的Form look and feel
都是从.NET Form class
继承下来的
 
l派生类可以调用基类的方法
Ø通过使用base关键字
Ø派生类在访问基类的时候有一定的限制,不能访问 private 的成员;internal的基类成员只能被同一个程序集中的派生类访问
 
l面向对象程序设计中的重要概念多态性。
Ø在运行时,可以通过指向基类的引用,来调用实现派生类中的方法。
Ø同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。
Ø多态性通过派生类覆写基类中的虚函数型方法来实现。
 
l编译时的多态性
Ø编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。
l运行时的多态性
Ø运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。
ØC#中,运行时的多态性通过覆写虚成员实现。
l重载类中定义的方法可能有不同的版本
Øpublic bool Withdraw(double amt, string name) public double Withdraw(double amt)
l特点(两必须一可以)
Ø方法名必须相同
Ø参数列表必须不相同
Ø返回值类型可以不相同
 
l声明虚方法
Ø使用virtual关键字 public virtual bool Withdraw(…);
l调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。
l虚方法可以有实现体


 
l子类中为满足自己的需要来重复定义某个方法的不同实现——覆写
l通过使用关键字override来覆写
Øpublic override bool Withdraw()
l只有虚方法和抽象方法才能被覆写
l要求 三相同)
Ø相同的方法名称
Ø相同的参数列表
Ø相同的返回值类型

 
l抽象方法是必须被派生类覆写的方法。
l抽象方法是可以看成是没有实现体的虚方法
l如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法
lpublc abstract bool Withdraw(…);

 
l接口为类提供了蓝图
l接口只提供定义
l实现接口的数据类型必须提供接口成员的实现
l接口本身可以从多个基接口派生

 
l代码重用,减少编写的代码量
l设计重用
Ø公用的字段和方法可以放到父类中,然后由其派生新的子类,之类有自己的字段和方法。
l经验而言——”is a的关系:
Ø如果A类是从B类中继承而来,即AB的子类,那么我们可以说:class A is-a class B

posted on 2006-06-09 16:54  公木子  阅读(559)  评论(0)    收藏  举报