什么是面向对象
面向过程,注重每一个步骤和顺序,面向对象更注重事情有哪些参与者(对象),以及各自需要做什么。
比如,洗衣机洗衣服。
面向过程会将任务拆解成一系列步骤,1.打开洗衣机 2.放入衣服 3.放洗衣粉 4.清洗
面向对象可以分为人和洗衣机俩个对象:
人:打开洗衣机 放入衣服 放洗衣粉
洗衣机:清洗衣服 烘干
面向过程比较直接高效,而面向对象更易于扩展和复用。
一切皆是对象,在Java中,它可以存储数据之外还可以对它自身进行操作。它能够直接反应现实生活中的事物,例如人,车,小鸟等,将其表示为程序中的对象。每个对象都有各自的状态特征(属性)和行为特征(方法),java就是通过对象之间行为的交互来解决问题的。
面向对象3大特点
封装
定义:将类中的信息隐藏在类的内部,不允许外部程序直接访问。而是通过该类提供的方法对其进行访问和操作。
优点 :
增强数据的安全性,不能让其他用户随意访问和修改。
类内部的结构可以自由修改。
继承
定义:继承就是子类继承父类的特征和行为,使得子类具有父类的实例域和方法。
目的:为了代码复用
java中一个类只能继承一个父类,且只能访问父类的非私有的属性和方法。
子类可以重写父类中的方法,命名与父类中同名的属性。
多态
定义:同一个事物,在不同时刻表现不同的状态。
条件:
1. 要有继承
2. 要有方法的重写
3. 父类引用指向子类对象:Parent p = new Child(); 当编译期类型是父类,运行期类型是子类时
非静态成员方法,编译看左边,运行看右边
静态成员方法,成员变量,编译和运行都看左边
成员方法存在覆盖,而成员变量不存在。
优点:增加代码的灵活度。消除类型之间的耦合度。