Java中的super关键字_动力节点Java学院整理
文件大小: 139k
源码售价: 10 个金币 积分规则     积分充值
资源说明:Java中的`super`关键字是用来引用当前对象中包含的父类对象的引用,它在类的继承体系中扮演着重要的角色。当我们创建一个子类对象时,这个子类对象内部会包含一个父类对象的实例。`super`关键字就用于访问和调用父类的成员,包括字段和方法。 在给定的示例中,我们有一个名为`FatherClass`的父类,它有一个公共的`int`类型字段`value`和一个公共方法`f()`。`FatherClass`的`f()`方法设置`value`为100并打印出来。 然后,我们有一个名为`ChildClass`的子类,它继承自`FatherClass`。子类中也定义了一个名为`value`的字段,这意味着子类有两个`value`字段:一个是继承自父类的,另一个是子类自己的。此外,子类还覆盖了父类的`f()`方法。在子类的`f()`方法中,`super.f()`被用来调用父类的`f()`方法,这使得父类的`value`字段被设置为100。接着,子类的`value`字段被赋值为200,并打印出子类自己的`value`值。 在`TestInherit`测试类的`main`方法中,我们创建了一个`ChildClass`的对象`cc`并调用其`f()`方法。在执行过程中,首先会创建`ChildClass`的对象,同时在内存中也会有一个父类`FatherClass`的对象。`cc.f()`的调用会先执行`super.f()`,更新父类的`value`为100,然后执行子类的代码,将子类自己的`value`设置为200。 关于内存分析,当`ChildClass cc = new ChildClass();`执行时,会在栈上创建一个`cc`引用,指向堆中新分配的`ChildClass`对象。这个对象有两个`value`字段,分别对应父类和子类。由于没有显式初始化,它们都被默认初始化为0。`cc.f()`的调用会通过`super`引用访问父类的方法和字段,这样父类的`f()`被调用,`value`被设置为100,然后执行子类的代码,子类的`value`被设置为200。 总结一下,`super`关键字在Java中是用于访问和调用父类成员的关键字,特别是在子类覆盖或扩展父类方法时非常有用。它可以用来调用父类的构造函数、字段和方法,帮助我们明确区分和操作子类与父类之间的关系。在理解类的继承和多态时,`super`关键字是一个核心概念。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。