面向对象的概念
在学习面向对象之前,我们可以先了解一下面向过程。面向过程是一种思想,意思是我们要做任何事,都需要亲力亲为,强调的是过程。
面向对象也是一种编程思想,相对于面向过程,我们可以由原来问题的执行者变为指挥者,进而把生活中很多复杂的问题变得简单化。
面向过程强调的是过程,比如,把大象装冰箱,一共分3步:
第1步:打开冰箱门
第2步:把大象放进去
第3步:关上冰箱门
而面向对象强调的是结果,比如:
什么样的冰箱?什么样的大象?谁负责把大象装进去?
有没有发现,如果是面向对象的话,干这件事的主体并不是你自己,你变成了一个指挥者?
再比如,衣服脏了,我们可以让女盆友帮忙洗,不需要关注中间过程是怎么洗的,就可以拿到干净的衣服,当然,这首先需要有一个对象(加油哦)~
还有,当我们想吃一道菜,其实并不需考虑这道菜是怎么做的,怎么送达的,只需点菜即可.传菜和做菜都有具体的对象来完成具体的功能.我们不需要关注实现的过程,只需要关注结果就好。
这就是我们所说的面向对象的编程思想(OOP,Object Oriented Programming)
如果面试官问什么是面向对象?你答万物皆对象!额,不建议这样做哈,因为我们还没到大佬的这个高度,还是最好举例。
就像是你说 : 空即是色 色即是空…信你个鬼鬼
2 面向对象的三大特征
- 封装:把相关的数据封装成一个类组件
- 继承:是子类自动共享父类的属性和方法,这是类之间的关系
- 多态: 增强软件的灵活性与重用性
3 类和对象
3.1 类
- java语言最基本的单位就是类,类似于类型
- 类是一类事务的抽象
- 可以理解为模板或设计图纸
3.2 对象
每个对象具有三个特征:对象的状态,对象的状态,对象的标识
- 对象的状态用来描述对象的基本特征
- 对象的行为用来描述对象的功能
- 对象的标识就是指在对象内存中都有一个位置的地址值用来和其他对象区分开来。
- 类是一类事务的抽象,对象是具体的实现
3.3 类和对象的关系
1.计算机语言来怎么描述现实世界中的事物的? 属性 + 行为
2.那怎么通过java语言来描述呢?
我们可以通过类来描述一类事物,用成员变量描述事物的属性,用方法描述事物的行为.
3.4 对象在内存中的存储
Java把内存分成5大区域,我们重点关注栈和堆。
- 一般来讲局部变量存在栈中,方法执行完毕内存就被释放
- 对象(new出来的东西)存在堆中,对象不再被使用时,内存才会被释放、
- 每个堆内存的元素都有地址值
- 对象中的属性都是有默认值的
TIPS: 栈与队列指的是一种数据的结构。
栈:先进后出(FILO – First In Last Out)
队列:先进先出(FIFO – First In First Out)
4 封装
4.1 概念
封装是隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式,比如类和方法
好处:
- 提高安全性
- 提高重用性
4.2 private关键字
是一个权限修饰符 ,可以用来修饰成员变量和成员方法.被私有化的成员只能在本类中访问
TIPS:如何封装?封装后的资源如何访问? 我们可以使用private关键字来封装成员变量与方法 如何访问私有资源? 关于成员变量:
setXxx – 对外提供公共的设置值方式 getXxx – 对外提供公共的获取值方式 关于成员方法:
把私有方法放在公共方法里供外界调用即可
5 访问控制符
用来控制一个类 或者类中成员的访问范围
6 匿名对象
没有名字的对象,是对象的简化形式
当被调用的对象只调用一次时(多次会创建多个对象浪费内存)
Demo d = new Demo();
d.sleep();
d.game();
//这个d就是对象的名字。
也可以写成:
new Demo().show();//创建了一个对象调方法
new Demo().game();//又创建了一个对象调方法