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