第3课:现代面象对象的程序设计

封装对象的原理:

一、什么是封装?封装的好处?

   把类的内部隐藏引来
   良好的封装能够减少耦合;
   类内部的实现可以自由地修改;
   类具有清晰的对外接口 

二、实现:

1.访问限制符来实现
public;protected(类内部及其子类);internal(同一个assembly);private(类内部)
默认:private 
protected internal  = protected + internal(同一项目,子类可以访问基类)

2.
属性和索引器也用来封装类的细节,并提供公用接口给该类的用户

继承性
1.派生类:基类
2.C#只支持单继承,多继承是指一个子类有多个父类,若要实现多继承要使用接口

3.防止继承:public sealed class XX
4.派生类可以调用基类的方法:base
基类
1 publicclass Account
2 {
3 publicdouble balance;
4 publicbool Withdraw(double amt)
5 {
6 balance -= amt;
7 returntrue;
8 }
9 }
派生类
1 publicclass CheckAccount:Account
2 {
3 publicbool Withdraw(double amt)
4 {
5 if(amt<=base.balance)
6 returnbase.Withdraw(amt);
7 else
8 returnfalse;
9 }
10 }

何时使用继承性
1.代码重用
2.设计重用(公有的字段和方法放在父类,私有的放在子类)
3.经验而言(A是由B继承来的,则可以说A IS a B)

多态性  

同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性


编译时多态(overload 重载),运行时多态(override 覆写)

overload 

位置:存在于有继承关系的类中
方法名:必须相同
参数列表:必须不相同
返回值:可以不相同

override

位置:存在于同一类中
方法名:必须相同
参数列表:必须相同
返回值:必须相同

virtual

若在子类中要覆写父类中的方法,则父类的方法必须为虚拟方法

abstract

父类中只有抽象方法的声明,实现在子类中
若类中存在一个抽象方法,则类必须声明为抽象类(抽象类不常用,用接口)

接口
1.接口为类提供蓝图(接口的目的就是搭建一个框架,等待实现)
2.接口只提供定义(永远是public,只有方法的定义没有实现【这方面和抽象方法一样】)
3.实现接口的数据类型必须提供接口成员的实现
4.接口本身可以从多个基接口派生
接口和抽象类的比较:
相同点:
1.都是只有方法的定义,没有实现
2.就像子类继承了父类,则必须提供父类抽象方法的实现一样;若一个类继承了接口,则必须提供方法体来实现
如:public class admin_user:Iadmin_user 表示类admin_user提供Iadmin_user中方法的实现

不同点:
1.接口里方法永远是public的
2.接口中只有方法的定义,而抽象类中可以有一般的方法的定义和其它类成员的定义:如属性、字段 
3.类只支持单继承,而接口可以实现多继承 

接口
publicinterface IAccount
{
void Method1();
string Method2(int x, int y);
...
}
实现类
Public class InsuranceAccount : IAccount
{
void Method1()
{

}
string Method2(int x, int y)
{

}
}

 

 

posted on 2011-07-02 08:46  jshchg  阅读(259)  评论(0编辑  收藏  举报

导航