Unit03 - 对象内存管理 、 继承的意义(上)    

1.内存管理:由JVM来管理的
  1)堆:
    1.1)存储所有new出来的对象(包含成员变量)
    1.2)没有任何引用所指向的对象就是垃圾,
        垃圾回收器(GC)不定时清理垃圾,
        回收过程是透明的(看不到的),
        调用System.gc()建议GC尽快来回收
    1.3)成员变量的生命周期:
          创建对象时存在堆中,对象被回收时一并被回收
    1.4)内存泄露:不再使用的对象没有被及时的回收
                 建议:对象不再使用时及时将引用设置为null
  2)栈:
    2.1)用于存储正在调用中方法的所有局部变量(包括参数)
    2.2)调用方法时在栈中为该方法分配一块对应的栈帧,
        栈帧中存储的是方法中的所有局部变量(包括参数),
        方法调用结束时,栈帧被清除,局部变量一并被清除
    2.3)局部变量的生命周期:
          调方法时存在栈中,方法结束时与栈帧一起被清除
  3)方法区:
    3.1)用于存储.class字节码文件(包括方法)
    3.2)方法只有一份,
        通过this来区分具体的对象


2.继承:
  2.1)作用:实现代码的复用,避免代码的重复
  2.2)通过extends来实现继承
  2.3)父类:所有子类所共有的属性和行为
      子类:子类所特有的属性和行为
  2.4)子继承父后,子具有: 父类的+子类的
  2.5)一个父类可以有多个子类,
      一个子类只能有一个父类----单一继承
  2.6)继承具有传递性
  2.7)java规定,构造子类之前必须先构造父类
      若子类构造中不调用父类的构造,则默认super()调用父类的无参构造
      若子类构造中调了父类的构造,则不再默认提供
      super()调用父类的构造必须位于子类构造的第一句


3.super:指代当前对象的父类对象
  super的用法:
    1)super.成员变量名------访问父类的成员变量
    2)super.方法名()--------调用父类的方法
    3)super()---------------调用父类的构造方法


4.向上造型:
  1)父类型的引用指向子类的对象
  2)能点出来什么,看引用的类型

//老虎是动物
Animal o3 = new Tiger(); //向上造型

class Animal{ //动物类
}
class Tiger extends Animal{ //老虎类
}

JAVA内存变量:
编译期,只检查语法是否正确
编译错误,指的是语法错误

运行期,JVM登场----分配内存

变量----占用的是JVM的内存

JAVA垃圾管理:
没有任何引用所指向的对象
垃圾回收器(GC),不定时到内存堆中清理垃圾
并非看到垃圾就立刻清理

垃圾回收过程是透明的(看不到的)
System.gc()让内存回收尽量快一些

内存泄露:

    没有用的内存还没有被及时的回收
         若对象不用了,及时将引用设置为null

Unit03 - 对象内存管理 、 继承的意义(上)

 

堆-2

Unit03 - 对象内存管理 、 继承的意义(上)

Unit03 - 对象内存管理 、 继承的意义(上)

方法区

Unit03 - 对象内存管理 、 继承的意义(上)

 

程序一:

package oo.day03;

public class Cell {
    int row;
    int col;
    
    Cell(int row,int col){
        this.row = row;
        this.col = col;
    }
    
    String getCellInfo(){
        return row+","+col;
    }
    
}
Cell.java

相关文章:

  • 2021-05-20
  • 2021-10-29
  • 2022-12-23
  • 2022-12-23
  • 2021-06-13
  • 2022-12-23
  • 2021-06-26
猜你喜欢
  • 2021-10-21
  • 2021-07-18
  • 2021-12-21
  • 2021-10-17
  • 2021-10-04
  • 2021-12-03
相关资源
相似解决方案