继承中的super和this关键字学习
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、若子类的构造方法中没有显示的调用父类的构造方法,系统默认调用父类无参数的构造方法,若父类没有无参数的构造方法则编译出错。
?
?
?