封装对象的原理:
一、什么是封装?封装的好处?
把类的内部隐藏引来
良好的封装能够减少耦合;
类内部的实现可以自由地修改;
类具有清晰的对外接口
二、实现:
1.访问限制符来实现
public;protected(类内部及其子类);internal(同一个assembly);private(类内部)
默认:private
protected internal = protected + internal(同一项目,子类可以访问基类)
继承性
1.派生类:基类
2.C#只支持单继承,多继承是指一个子类有多个父类,若要实现多继承要使用接口
2 {
3 publicdouble balance;
4 publicbool Withdraw(double amt)
5 {
6 balance -= amt;
7 returntrue;
8 }
9 }
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.类只支持单继承,而接口可以实现多继承
{
void Method1();
string Method2(int x, int y);
...
}
{
void Method1()
{
…
}
string Method2(int x, int y)
{
…
}
}