9.2 构造器与垃圾收集器
来源:互联网 发布:python中的sleep 编辑:程序博客网 时间:2024/06/05 14:20
前言
上节提到构造函数,若是涉及到父类呢?本章将对此问题进行论述。
回顾
每个对象不只是保存自行声明的变量,还有从父类继承来的东西(至少带有Object类)。
构造函数的运行过程
对象在创建时,对象会取得的所有实例变量所需的空间,包括继承的东西,若父类有setter方法调用私有变量(私有本来不继承),则此变量也有空间。对象带有setter所包装的实例变量,这些实例变量是子类被初始化时创建的(不算真正的对象,但因为它们有被包装过,所以我们不在乎)
在创建对象时,所有继承的构造函数都会执行,即每个构造函数都会在子类对象创建时期执行,启动构造函数链,先子类,自下而上,一直到Object类,但是执行过程则是从上而下,类比小孩不能再父母之前出生。值得注意的是子类会根据父类的实例变量来继承方法。完整的对象需要也是完整的父类核心。
super关键字
调用父类的构造函数的唯一方法是调用super();
如
public class Duck extends Animal{ int size; public Duck(int newSize){ super(); size=newSize; }}若没有super();则编译器会自动加,且加的调用必为没有参数的父类构造函数版本。
整个过程就是先全部进栈(调用),一直到Object类,再依次执行(完成)。
父类的部分必须在子类创建完成之前就完整地成形,即父类的构造函数必须在子类的构造函数之前结束。
对super()的调用必须是构造函数的第一个语句。
如
public Boop(int i){ size=i; super(); //错误,不是第一个语句}若父类的构造函数有参数,则需通过super(参数);来调用父类带参数的构造函数。
从某个构造函数调用重载版的另一个构造函数
基本思想是所有构造函数先调用该构造函数,让它执行真正的构造函数,避免让相同的代码重复出现。
this关键字
this()是对对象本身的引用。
this()只能用在构造函数中,且为第一行语句。
this()与super()不可兼得。
使用this()来从某个构造函数调用同一个类的另外一个构造函数。
生命周期
1.对象的生命周期看引用变量的生命周期。
2.实例变量的寿命与对象相同。
3.局部变量只存活在声明该变量的方法中,作用域仅限于该方法中,不包括该方法调用的其他方法中,该方法执行结束(包含中间调用其他方法的结束),局部变量死亡。
4.引用变量只能在处于其范围中才能被引用,即除非引用变量在范围内,不然就不能通过该引用变量使用被引用的对象。
5.对象用完就要抛弃(让该对象的所有引用死亡,已经不能取得对象了),给GC自动回收内存
对象的释放
释放对象引用的三种方法
void go(){Life z=new Life(); //法一:方法结束后,引用变量永久性的离开范围}Life z=new Life();z=new Life(); //法二:引用赋值到其他对象Life z=new Life();z=null; //法三:引用设定为null
书海拾荒
1.构造函数可以是公有的,私有的或不指定的。
2.私有的构造函数代表除了该类外不可存取。
3.每个类(包括抽象类)至少有一个构造函数。
4.null代表“空”的字节组合
- 9.2 构造器与垃圾收集器
- 9.1 构造器与垃圾收集器
- 垃圾收集算法与垃圾收集器
- Java垃圾收集算法与垃圾收集器
- java虚拟机--垃圾收集算法与垃圾收集器
- JAVA 对象的创建与毁灭 构造函数与垃圾收集器(GC)
- HeadFirstJava——9_构造器与垃圾收集器
- 第九章 构造器与垃圾收集器---对象的前世今生
- Java Head First 第九章 构造器与垃圾收集器
- java的堆、栈、构造器和垃圾收集器
- 垃圾收集器与Java编程
- 垃圾收集器与Java编程
- 垃圾收集器与Java编程
- 垃圾收集器与Java编程
- 垃圾收集器与内存分配策略
- 垃圾收集器与内存分配策略
- 垃圾收集器与内存分配
- 垃圾收集器与内存分配策略
- SEO软文标题怎么写吸引人?2018标题写作套路大全
- 敏捷开发杀死了项目经理?
- Zookeeper入门-Java版本HelloWorld例子
- phpStudy配置虚拟域名
- unity自带寻路Navmesh入门教程(一)
- 9.2 构造器与垃圾收集器
- 上班三年
- tf.control_dependencies()和tf.identity()
- LeetCode 138. Copy List with Random Pointer
- git merge冲突产生
- 代码安全部分总结
- Java| Javadoc生成Java帮助文档
- Vue学习日志:模板语法(3)
- elasticsearch实现远程索引复制