目录

什么是面向对象

面向对象和面向过程举例

面向对象的三大特性

封装:

什么是封装

封装的优点

经典封装的例子

继承:

多态:

多态的例子


什么是面向对象

面向对象(OOP)

与面向过程相比,两者是对同一种问题的两种不同的处理角度

面向过程更注重事情的每一个步骤以及这些步骤的顺序

面向对象更注重事情都有那些参与者,以及每个参与者都需要干什么

这里可以举一个洗衣机洗衣服的案例

面向对象和面向过程举例

假设人要用洗衣机洗衣服,具体步骤为:

        1.打开洗衣机

        2.放衣服

        3.放洗衣粉

        4.清洗

        5.烘干

那么面向过程会将任务拆解成一系列的步骤(函数),然后按照每一步一次执行

        打开洗衣机------->放衣服------->放洗衣粉------->清洗------->烘干

面向对象则会拆解出两个类

        1.人

        2.洗衣机

然后将两个类分别要执行的操作(方法)赋予这个类

        1.人:打开洗衣机        放衣服        放洗衣粉

        2.洗衣机:清洗        烘干

从以上例子可以看出

        面向过程比较直接高效

        面向对象更易于复用、扩展、维护

面向对象的三大特性

三大特性为:封装        继承        多态 

封装:

什么是封装

封装的意义,在于明确表示出允许外部使用的所有成员函数和数据项

内部细节对外部调用透明,外部调用无须就该或关心内部实现

也就是说外部调用的时候不用管内部方法是如何实现的,只需要知道内部是怎么调用的即可

封装的优点

  • 1. 良好的封装能够减少耦合。
  • 2. 类内部的结构可以自由修改。
  • 3. 可以对成员变量进行更精确的控制。
  • 4. 隐藏信息,实现细节。

经典封装的例子

        1.Javabean的属性私有,提供get/set函数对外进行访问,因为Javabean中属性的赋值只能由Javabean本身决定,不能由外部随意修改

private String name;
    public void setName(String name) {
        this.name = "std_"+name;
    }

正常的赋值流程为外部调用set方法赋值,然后传入的字符串拼接上特有的命名规范("std_")然后存入对象的属性中

如果属性是公有,则外部可以通过直接调用变量的属性名来对属性进行赋值,很有可能命名就不是我们规定的规范了

        2.orm框架,在jdbc过程中,Mybatis就属于对jdbc进行封装,调用时只需要配置好Mybatis要求的数据,然后调用其中已经分装好的方法,Mybatis就属于封装好的类

继承:

        继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

        子类共性的方法或者属性直接使用父类的,而不需要自己再定义,只需扩展自己个性化的

Java只能单继承,但是能实现多个接口,C++可以多继承

多态:

        基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同

        多态无法调用子类特有的功能,必须属于方法重写

多态的例子

        继承父类,重写父类的方法,父类引用指向子类对象

父类类型名    变量名 = new    子类对象;
变量名.方法名();

这样式调用子类的方法,如果方法重写,调用子类重写后的方法

所以我们可以看出,多态就是同一个接口或者父类,使用不同的实例而执行不同操作

重载不是多态,重写才是