C#学习笔记(二)面向对象的程序设计

1.封闭对象的原理

1)良好的封装能减少耦合
2)类的内部实现可以自由修改
3)类具有清晰的对外接口


实现封装的方式之一是数据隐藏,使用访问限制修饰符。包括Public、Protected internal、Internal、protected、private等。属性和索引器也用来封装类的细节,并提供公用接口给该类的用户。在C#中,默认的访问限制是Private。

2.继承性

一个类可以有能力直接从另一个类获得其代码和数据,派生类从基烦躁获得其所有的成员。C#中只允许单继承。sealed关键字用于防止继承。
C#中继承的方法是使用冒号,冒号左侧是派生类(或子类),冒号右侧是基类(或父类)。
继承时,如果Child是继承Parent而是为,则Child中包含一个Parent对象。如果派生类要调用基类方法(具有权限的情况下),可使用base关键字。
在引用对象的情况下,可直接使用一个父类声明,然后实例化成一个子类。如
CheckAccount ca=new CheckAccount();
Account acc= new CheckAccount();
反过来是不行的。例如CheckAccount ca2=acc;这种情况下,可使用数据类型转换,如:
CheckAccount chk=(CheckAccount)acc;
如果这时acc不是CheckAccount的对象,那么运行时值抛出System.InvalidCastException异常。

3.多态

多态指在运行时可以通过指向基类的引用,来调用实现派生类中的方法。同一操作作用于不同的对象,产生不同的执行结果,这就是多态性。多态性通过派生类覆写基类中的虚函数型方法来实现。
多态分为编译时多态性和运行时多态两种。编译时多态性是通过重载实现的,对于非虚的成员来说,系统在编译时根据传递的参数、返回的类型等信息决定实现何种操作。运行时多态性是指直到系统运行时才根据实际情况决定实现哪种操作。C#中的运行时多态性通过覆写虚成员实现。


重载(Overload):类中定义的方法可能有不同的版本。特点(两必须一可以)方法名必须相同,参数列表必须不相同,返回值类型可以不同。例如类的构造函数。

虚函数:使用virtual关键字声明。调用虚函数运行时将确定调用对象是什么类的实例,并调用相应的覆写方法。虚方法可以有实现体。


覆写(Override):在子类中为了满足自己的需要来重复定义某个方法的不同实现。只有虚方法和抽象方法才能被覆写。要求(三相同):相同的方法名称、相同的参数列表、相同的返回值类型。


Override存在于继承关系的类中,Overload存在于同一类中。


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

 

何时使用继承?

1.代码重用,减少代码编写量。
2.设计重用:公用的字段和方法可以放到父类中,然后由其派生新的子类,子类有自己的字段和方法。
3.“is a”的关系:如果A继承于B,则A是B的,也可以说A is a B。

 

4.接口

接口为类提供了蓝图,只提供类的定义。实现接口的数据类型必须提供接口成员的实现。接口本身可以从多个基接口派生。没有定义和抽象类这一点比较象,但是接口永远是公有的。
接口使用interface关键字。


继承和接口是互补的。IS a是继承,acts-like是接口。设计中经常两者都使用。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值