C#面向对象三大特性总结

前言

看完视频并没有及时总结,等到快要验项目了,才来又总结一遍。不过学习什么时候都不晚!其实看完设计模式以后对封装,继承,多态有了更深的理解。

三大特性

分别有封装,继承,多态

封装

字面意思也很好理解。我们大家都喜欢网购,产品为了不受破坏或者不外泄,都会进行产品封装,如果放到代码里,这就叫封装了。
比如我们大家都玩微信,微信上面只有一些按钮来满足我们的需求,我们点击发送,消息就可以传递到对方的信息框,但是我们并不知道这个过程是怎样运行的。这就是因为过程被封装。

简单来说,就是将功能分开: 后台工作+显示工作


继承

举个栗子:

拿双胞胎举例,他们都继承了父母的基因,所以双胞胎之间的共性是有很多的,比如样貌,身高等,可能都会有相似之处。这就是继承

代码展示继承:
老师继承了人类—–
继承

注意:类与接口叫实现,不叫继承。

里氏转换is/as

转换:
举个栗子

有一天儿子长大了,想做一些父亲能做的事。这个时候就需要有父亲的权限。
但是父类不能直接转换成子类,需要方法。
1. new的是父类,转的是子类,不行
2. 如果new的时候new的是子类,那么再转换这个子类是可以的
3. new的是大哥,转的是大哥,可以
4. 如果new的是一个子类,转换的是另一个子类,是不可以的
5. new的是大哥,转的是小弟,不行。
总结:new什么,转什么
子类转换成父类的时候,直接隐式转换就可以

转换过程中,会报异常,但是代码没错,这时需要一个判断

is:—–

bool类型,只做判断。

is
as:—-

返回的是类型,不是bool,先判断再转换

is与as的区别:

  1. is可以做as的事情(is更保险一点)
  2. as转换的时候不报异常,调方法的时候报异常,返回来的是null(空)
  3. is转换返回的是bool值。true就是能转换,false就是不能转换
  4. as先进行判断再进行转换

多态

双胞胎不仅继承了父母的基因,他们还有自己的特点,比如说品行或者脾气,都会有自己的性格特点,这也是我们能区分出来的标志。这种不同,就是多态。

多态:就是对象可以表现多个类型的能力。

典型的多态:
多态

子类重写父类的方法:

(1)子类的方法名可以和父类的方法名重名,但是会出现一条绿线,也就是出现瑕疵。
解决方法:
1. 在子类方法的修饰符后面+new
2. 在父类的方法修饰符后+虚方法(virtual),并在子类方法修饰符后+override(重写)

(2)子类可以有与父类方法名相同的方法。
1. 签名不同(即重载)
2. 签名相同(隐藏父类方法)—-即命名

建立多态的方式

  1. 父类实现
  2. 抽象类实现
  3. 接口实现

拓展:

抽象方法与抽象类:

  • 抽象方法
    ①使用abstract修饰
    ②没有方法体
    ③必须在抽象类中
  • 抽象类:
    ①无法实例化(给子类写的代码,自己用不了)
    ②父类是抽象类,子类继承了这个类,必须把抽象类中的抽象方法重写
    ③抽象成员只能在抽象类中

二 虚方法与抽象方法:
这里写图片描述

三 override与overload的区别:

  1. overrload)重载是方法的名称相同,参数或参数类型不同。进行多次重载以适应不同的需要。重载是面向过程的概念

  2. override)重写是进行基类中函数的重写。override是面向对象的概念

错误的重载:————————-个数相同,类型也相同
错误

正确的重载:———————–有一个不同(方法名相同,类型 不同)
正确

后记

写完博客,感觉自己又温习了一遍.还是加深了一遍印象.比看完就总结效果更好一些.其实最好的是看完就总结一遍,事后再总结一遍.这样还能达到温故知新的效果.

猜你喜欢

转载自blog.csdn.net/carrie_q/article/details/80641891