面向对象思想
三大思想:
- 面向对象分析(OOA)
- 面向对象设计(OOD)
- 面向对象程序(OOP)
三大特征:
- 封装性:所有的内容对外部不可见。
- 继承性:将其他功能继承下来继续发展。
- 多态性:方法重载本身是一个多态性体现。
面向对象是把相关数据和方法组织为一个整体来看待。
面向对象到面向过程,是程序员思想上从执行者到指挥者的转变。
类与对象
关系:类表示一个共性的产物,对象是个性的产物,个体的特征。
类通过对象使用,对象的操作在类中定义。
类由属性和方法组成:
属性:相当于人(对象)的特征
方法:相当于人(对象)的一个个行为,如:说话,吃饭,唱歌,睡觉。
在一个java文件中可以存在多个类,但只能有一个public修饰的类,文件名与其类名一致。
创建对象内存分析
栈
Java中一个线程一个栈区,每一个栈元素都是线程私有的。栈的数据大小和生存期都是确定的,缺乏灵活性,但存取速度快仅次于寄存器。
速度快原因:
- 栈内存中,通过栈指针来创建空间与释放空间。、
- 指针向下移动,会创建新的内存,向上移动,会释放这些内存。
- 需要明确知道大小与范围。
- 存储的是:基本数据类型的数据和引用数据类型的引用。
如int a=10;Person p=new Person();10和引用p都存放在栈内存中。
堆
堆存放的是类的对象。
Java是一个纯面向对象语音,限制了对象创建方式:需要通过new关键字创建,new关键字是告诉jvm,对于创建一个对象,开辟一块堆内存空间。
堆内存和栈内存不同,优点是我们创建对象时,不必关注堆内存中需要开辟多少存储空间,不需要关注内存占用时长。
堆内存中内存释放由GC(垃圾回收器)完成的。
回收原则:
堆内存中不存在此对象引用时,视为垃圾,等待回收。
构造方法
有参数与无参数。在方法进行new时会执行构造方法
构造方法重载:参数列表不同
方法重载
- 方法名必须一致。
- 参数类型或长度不同或(参数类型顺序不同)。
- 与返回值无关。
匿名对象
只能用一次的对象,只交互一次,使用完就会被当成垃圾等待清除。
没有名字的对象。new 对象.方法();