黑马程序员-抽象方法和接口-学习笔记

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------
上一节复习:
封装的表现:
1、把字段封装成属性
2、把多个参数封装成一个对象
3、一堆代码封装到一个对象里调用
4、多个cs文件封装成一个程序集


继承:
1、多个类有共同特征,共同特征抽取到一个父类,多个类去继承,实现代码重用以及多态


多态:
多态的实现:虚方法,抽象方法,接口
多态就是多种表现形态,
多态就是写代码的时候用父类,用抽象的那个类型变量,具体实现是用子类实现的
使用父类类型、指针调用方法、成员,最后表现出来的是子类对象的结果。


程序里的表现:父类的对象指向子类的实例,在调用方法时,调用的是子类重写的方法。


多态:为了程序的可扩展性
1、开放封闭原则(对修改封闭,对扩展开放。)
2、多态就是指不同对象收到相同消息时,会产生不同行为,同一个类在不同的场合下表现出不同的行为特征
3、多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。


里氏替换原则:
1、父类引用指向子类对象(隐式类型转换)。
2、父类对象不能替换子类,如果父类类型变量指向的确实是一个子类对象,则可以显式类型转换(强转),否则异常失败。


如何验证类之间的继承关系:
1、is-a可以用来验证继承关系中是否合理。(can do,验证实现接口是否合理)
if(子类 is 父类){}


类型转换介绍:
1、不推荐:(子类)父类,常说的强转。不判断可能异常,判断的话会判断两次。
2、推荐:as也可以实现,if(父类 as 子类 != null){}


通过子类获取父类:子类类型变量.GetType().BaseType.ToString()


抽象类介绍:
抽象方法:
1、父类中使用abstract关键字。不能有任何方法体,直接在方法后面加分号。
2、抽象成员必须在抽象类里面。
3、子类继承父类,使用override关键字。而且必须实现父类抽象的方法。(例外:子类也是抽象的,可以不用实现)
4、抽象成员可以包含方法、属性、索引器、事件【最终都是方法】
5、抽象类不能被实例化。(抽象类的作用就是为了继承,重写>>>多态,代码重用)
6、抽象成员的访问修饰符不能是private
7、在抽象类中可以包含实例成员
8、抽象类是有构造函数的


抽象方法和虚方法的选择:
1、如果父类中的方法没有默认实现,父类也不需要被实例化的时候,则可以将该类定义为抽象类(例如动物叫声的例子)
2、如果父类中的方法有默认的实现,并且父类需要被实例化的时候,考虑将父类定义成普通类,使用虚方法来实现多态


接口介绍:


1、接口存意义:多态。多态的意义:程序可扩展性。最终目的节省成本,提高效率。
2、接口解决了类的多继承问题
3、接口解决了类基础以后体积庞大的问题。
4、接口之间可以实现多实现。
5、接口中只能包含方法(方法、属性、索引器、事件)
6、接口中的方法也不能有任何实现(类似抽象方法,直接加一个分号)
7、接口中的成员不能有任何访问修饰符(哪怕是public),默认为public
8、接口不能被实例化。
9、实现接口的类,必须实现接口中所有的成员。
10、当一个雷同时继承了某个类,病切也实现了某些接口的时候,必须要将继承的类写在第一个。
11、当多个类型,都具有某个或某几个功能时(方法),但这几个类型又分属于不同的系统(这几个类型没有共同的父类,这时就不能用抽象类了。),所以这时,为了实现多态就可以把这几个类型共有的方法提取到一个接口中,让这几个类型分别实现该接口。
12、当父类实现了接口,子类继承父类,那么子类也是该接口的子类型。
13、接口使用注意事项:
建议不要在一个接口中写过多的方法,避免造成接口污染。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值