面向对象--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关键字,可以使子类的子类不能再重写父类的虚方法或抽象方法。

构造函数

子类的构造函数被调用时,会默认先调用父类的构造函数

如果父类的构造函数被重载了,在子类中必须显示调用父类的构造函数

原文地址:https://www.cnblogs.com/1016391912pm/p/11629292.html