class FatherClass {
public int value;
public void f() { //5、FatherClass的f()方法
value = 100; //父类对象的value赋值100
System.out.println("FatherClass.value="+value); //打印父类对象的value值
}
}
class ChildClass extends FatherClass {
public int value;
public void f() { //3、ChildClass的f()方法
super.f(); //4、调用父类FatherClass的f()方法
value = 200; //6、对象cc 的value = 200
System.out.println ("ChildClass.value="+this.value); //打印cc的value值
System.out.println(value); //打印cc的value值
System.out.println(super.value); //打印父类对象的value值
}
}
public class TestInherit {
public static void main(String[] args) { //程序主入口方法
ChildClass cc = new ChildClass(); //1、创建ChildClass的对象引用cc
cc.f(); //2、调用ChildClass的f()方法
}
}
上面代码内存分析:
总结:
this是当前对象自身的引用;
super是当前对象的父类对象的引用。
补充:构造方法中的super()和this()方法:
构造方法中的super(argument_list),表示调用其父类的构造方法。
构造方法中的this(argument_list),表示调用自身类中的其它构造方法。
1、子类的构造过程必须调用其父类的构造方法:想像,没有父亲就不可能有儿子。
2、若构造方法中调用super(argument_list),必须写在子类构造方法的第一行;
3、若子类的构造方法中没有显示的调用父类的构造方法,系统默认调用父类无参数的构造方法,若父类没有无参数的构造方法则编译出错。