- 引用和对象的生命周期
引用:一种数据类型,背后含义指向一个对象。在jav语言中,98%无法直接看到对象,看到的实际是引用
对象的生命周期:new分配空间 初始化时期 活跃时期 被判定为死亡的时期 - 类的加载
发生在运行期间
从磁盘上吧*。Class文件(类字节码文件)载入到内存的过程
类加载器(ClassLoader)
类被加载到方法区
加载的是类的方法语句数据,静态属性,源信息
类的加载时机? 延迟加载,需要的时候才加载
类会被使用的情况:new 对象 访问静态属性/方法; 反射
静态属性的初始化顺序 :按照书写顺序执行(定义时初始化,静态代码块) - 编译期间
将源文件(.java)转化(编译Compile)为·类字节码文件(.class)
编译期间运行的不是我们的源代码,而是javac程序,我们的源代码只是作为别人程序的输入而已。 - 运行期间
运行的是java…,运行的是我们的java程序,java会启动JVM虚拟机 - 类的继承
面向对象三大特征:封装 继承 多态
继承的目的:代码的复用性,继承要表达的是一种有关系的类 - 方法的·覆写 Ovrerride
子类重写了父类的一个方法
方法名称相同,形参列表相同,返回类型要相同
特例:允许返回值类型是父类方法返回类型的子类
访问限定符:不能比父类的更封闭
方法的重载Overload 方法名称相同,形参列表不同
方法的签名:方法名称+形参列表 - 覆写/重写
一定发生在子类上,必须实现和父类
(1) 方法名称+形参列表+返回值类型相同的方法
(2) 目的:针对同一行为,表现出和父类不同的方式(例子:叫声)
(3) 访问限定符不能比父类的更严格(封闭)
(4) 一般建议用@Override注解修饰
(5) IDEA可用generate code来自东生成
(6) 和重载Overload做好区分 - super关键字 可以和this对照着看
(1) super用来访问父类的方法
(2) 不是代表父类对象,可以抽象的去理解,执行属性中属于父类1的那部分
Super不是引用 明确调用父类的方法
9.java中类的继承,只允许单继承
10.父类和子类的关系,涉及到super关键字
类加载的关系:子类的加载必须触发父类的加载
父类的加载一定是发生在子类的加载之前的
对象实例化/构造的关系
子类的对象的构造的过程会出发父类中属性的初始化过程
父类的属性初始化一定是发生在子类属性的初始化之前
属性的初始化:定义时初始化+构造代码块按书写顺序 构造方法
和super调用父类构造方法的位置无关
JAVA之类的加载和继承
最新推荐文章于 2021-06-10 12:37:42 发布