面向对象--OO--object-oriented
如何把大象装冰箱?
面向过程:打开冰箱门---把大象装进去---关上冰箱门
面向对象:
1.大象:进入冰箱、离开冰箱
2.冰箱:开门、关门
3.人:检测1、检测2
面向对象三大特性:封装、继承、多态
封装:数据安全;内部修改保持稳定;提供重用性;分工合作,职责分明;方便构建大型复杂的系统。
继承:去掉重复代码;可以实现多态;侵入性很强的类关系。
多态:相同的变量、相同的操作,但是不同的实现
方法的重载 接口&实现 抽象类&实现 继承
第4特性:抽象
抽象方法必须放在抽象类中(抽象类中可以有普通属性方法),不必写方法体,在子类中必须用override重写。
接口:没有任何具体实现,成员不能写访问修饰符,默认public,包含方法、属性、事件、索引器。
抽象类和接口自身都不能实例化,可以声明然后用实现类(子类)构造。
如何选择接口和抽象类
接口:纯粹的约束;多继承更灵活;表示can do(能做什么);
抽象类:父类+约束;单继承;表示 is a(是什么);
子类都一样的放在父类;子类都有但不一样,抽象一下;子类有的有、有的没有,用接口。
接口用的更多,因为接口更简单灵活,除非有些共有的需要继承。
虚方法
public virtual void vMethod() { }
People p = new Child();
p.vMethod(); //只有当子类中使用override关键字重写该虚方法时,才会调用子类的方法
密封
使用sealed+override关键字,可以使子类的子类不能再重写父类的虚方法或抽象方法。
构造函数
子类的构造函数被调用时,会默认先调用父类的构造函数
如果父类的构造函数被重载了,在子类中必须显示调用父类的构造函数