面向对象10
1、内存管理:由jvm管理
-
堆:
-
存储的是new出来的对象和实例变量(数组即其元素)
-
垃圾,即没有任何引用指向的对象
垃圾回收器(GC)jvm自带的机制会不定时到内存中清理垃圾,回收过程不可见,通过调用System.gc()方法提醒GC回收(并不是手动回收,调用方法也未必马上回收)
-
实例变量的生命周期:
创建对象时生成于堆中,在对象被GC回收时一同被回收
-
内存泄漏:本应被回收的对象没有被回收,持续的泄漏会导致内存持续被占用,严重的会导致系统崩溃
不再使用的对象应将其引用设null
-
-
栈:
-
存储正在调用的方法的局部变量(方法参数)
-
调用方法时,会在栈中为方法分配对应的栈帧,
-
栈帧中存储局部变量(包括方法的参数),
方法调用结束时,栈帧被自动清除,局部变量一并被清除
-
局部变量的生命周期:方法被调用时创建,并存储在栈帧中,方法被调用结束时,和栈帧一起被清除
-
-
方法区:
- 存储.class字节码文件(包括静态变量、所有方法)
- 方法只有一份,对象调用方法时,通过this来区分不同的对象
2、面向对象三大特征
-
封装
- 类的封装:封装共同的属性和行为,,作为整体操作
- 业务逻辑的封装:将不同的功能封装在一个个方法中,需要时调用
- 访问控制修饰符:数据(属性)私有化,封装具体的访问权限,保护数据安全
-
继承
-
作用:代码复用
-
超类:所有子类共有的方法和属性
接口:部分类共有的方法和属性
派生类:特有的行为和属性
-
单一继承、多接口实现,具有传递性
-
-
多态
-
所有对象都是多态的,通过向上造型来体现
所有抽象的方法都是多态的,通过方法的重写来实现
-
向上造型、强制类型转换(向下造型)、instanceof判断
-
补充:
- 成员变量是有默认值的(在调用成员变量时,需要new对象,赋默认值),局部变量没有默认值。故一个不需要在声明时初始化,另一个需要。
- 面向对象:即是一种以对象为单位来思考、解决问题的编程思想