面向对象的三大特性
一.面向对象特性——封装:
概念:把对象所能操作的信息进行封装;
封装作用:
1.减少代码之间的耦合;
2.提供统一的访问接口,内部修改不影响外部的调用;(开放封闭原则)
二.面向对象特性——继承:
概念:类与类之间的关系,子类继承父类,也就继承了父类除构造函数和析构函数之外的所有成员;
构造函数是否可以被继承:
1.当写好一个类以后,默认会存在一个没有参数的构造函数(即便我们不写构造函数,也会存在这么一个无参的构造函数)
2. 当手动添加一个构造函数以后,会将默认的无参数的构造函数覆盖掉。
3.类的构造函数是不能被继承的。只能在子类中去调用父类的构造函数。
私有成员是否可以被继承:
虽然子类继承父类后,在创建子类对象的时候,父类中的那些私有成员,也被分配了内存(子类中也有)。但是,继承只是面向对象中的一个概念,目的是为了子类使用(多态、代码重用),私有成员即便继承了,子类中也不能访问,所以在面向对象中,继承了但不能访问,没有意义。
三.一.面向对象特性——多态:
概念:同一操作作用于不同对象,可以有不同的解释,执行产生不同的结果;
实现多态的方式:
1.重载;
2.重写;
3.抽象方法;
4.虚方法;
5.隐藏;
6.接口;
多态的作用:
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
里氏替换原则(Liskov Substitution Principle):派生类(子类)对象能够替换其基类(超类)对象被使用。通俗一点的理解就是“子类是父类”,举个例子,“男人是人,人不一定是男人”,当需要一个父类类型的对象的时候可以给一个子类类型的对象;当需要一个子类类型对象的时候给一个父类类型对象是不可以的!
开放封闭原则(Open Closed Principle):封装变化、降低耦合,软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。因此,开放封闭原则主要体现在两个方面:对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。