1 堆与栈
栈——方法调用,局部变量,对象引用变量,primitive主数据类型变量。
堆——所有对象,实例变量(保存于所属的对象中)。
2 构造函数
构造函数没有返回类型,名称一定要与类名相同。
构造函数不会被继承。
public Duck()
{}
使用构造函数来初始化对象状态
public class Duck
{
int size;
public Duck(int duckSize)
{
size = duckSize;
}
}
最好要有不需参数的构造函数
顺序不同也算参数不同
public class Duck
{
int size;
public Duck()
{
size = 27;
}
public Duck(int duckSize)
{
size = duckSize;
}
}
3 构造函数链
在创建新对象时,所有继承下来的构造函数都会执行。
调用父类构造函数的唯一方法是调用super()。
public class Duck extends Animal
{
int size;
public Duck(int duckSize)
{
super();
size = duckSize;
}
}
若我们未调用super(),编译器会自动帮我们加上super()的调用(无参数版本),即永远先执行父类构造函数。
对super()的调用必须是构造函数的第一个语句。
4 构造函数调用构造函数
使用this()来从某个构造函数调用同一个类的另一个构造函数。
this()只能用在构造函数中,且必须是第一行语句。
super()与this()不可兼得。
5 释放对象的引用
1.引用永久性的离开它的范围。
void go()
{
Life z = new Life();
}
2.引用被赋值到其他的对象上。
Life z = new Life();
z = new Life();
3.直接将引用设定为null。
Life z = new Life();
z = null;