前言
看完视频并没有及时总结,等到快要验项目了,才来又总结一遍。不过学习什么时候都不晚!其实看完设计模式以后对封装,继承,多态有了更深的理解。
三大特性
分别有封装,继承,多态
封装
字面意思也很好理解。我们大家都喜欢网购,产品为了不受破坏或者不外泄,都会进行产品封装,如果放到代码里,这就叫封装了。
比如我们大家都玩微信,微信上面只有一些按钮来满足我们的需求,我们点击发送,消息就可以传递到对方的信息框,但是我们并不知道这个过程是怎样运行的。这就是因为过程被封装。
简单来说,就是将功能分开: 后台工作+显示工作
继承
举个栗子:
拿双胞胎举例,他们都继承了父母的基因,所以双胞胎之间的共性是有很多的,比如样貌,身高等,可能都会有相似之处。这就是继承
代码展示继承:
老师继承了人类—–
注意:类与接口叫实现,不叫继承。
里氏转换is/as
转换:
举个栗子
有一天儿子长大了,想做一些父亲能做的事。这个时候就需要有父亲的权限。
但是父类不能直接转换成子类,需要方法。
1. new的是父类,转的是子类,不行
2. 如果new的时候new的是子类,那么再转换这个子类是可以的
3. new的是大哥,转的是大哥,可以
4. 如果new的是一个子类,转换的是另一个子类,是不可以的
5. new的是大哥,转的是小弟,不行。
总结:new什么,转什么
子类转换成父类的时候,直接隐式转换就可以扫描二维码关注公众号,回复: 1709679 查看本文章
转换过程中,会报异常,但是代码没错,这时需要一个判断
is:—–
bool类型,只做判断。
as:—-
返回的是类型,不是bool,先判断再转换
is与as的区别:
- is可以做as的事情(is更保险一点)
- as转换的时候不报异常,调方法的时候报异常,返回来的是null(空)
- is转换返回的是bool值。true就是能转换,false就是不能转换
- as先进行判断再进行转换
多态
双胞胎不仅继承了父母的基因,他们还有自己的特点,比如说品行或者脾气,都会有自己的性格特点,这也是我们能区分出来的标志。这种不同,就是多态。
多态:就是对象可以表现多个类型的能力。
典型的多态:
子类重写父类的方法:
(1)子类的方法名可以和父类的方法名重名,但是会出现一条绿线,也就是出现瑕疵。
解决方法:
1. 在子类方法的修饰符后面+new
2. 在父类的方法修饰符后+虚方法(virtual),并在子类方法修饰符后+override(重写)
(2)子类可以有与父类方法名相同的方法。
1. 签名不同(即重载)
2. 签名相同(隐藏父类方法)—-即命名
建立多态的方式
- 父类实现
- 抽象类实现
- 接口实现
拓展:
一抽象方法与抽象类:
- 抽象方法
①使用abstract修饰
②没有方法体
③必须在抽象类中 - 抽象类:
①无法实例化(给子类写的代码,自己用不了)
②父类是抽象类,子类继承了这个类,必须把抽象类中的抽象方法重写
③抽象成员只能在抽象类中
二 虚方法与抽象方法:
三 override与overload的区别:
overrload)重载是方法的名称相同,参数或参数类型不同。进行多次重载以适应不同的需要。重载是面向过程的概念
override)重写是进行基类中函数的重写。override是面向对象的概念
错误的重载:————————-个数相同,类型也相同
正确的重载:———————–有一个不同(方法名相同,类型 不同)
后记
写完博客,感觉自己又温习了一遍.还是加深了一遍印象.比看完就总结效果更好一些.其实最好的是看完就总结一遍,事后再总结一遍.这样还能达到温故知新的效果.