java之super关键字用法实例解析
文件大小: 65k
源码售价: 10 个金币 积分规则     积分充值
资源说明:在Java编程语言中,`super`关键字是一个非常重要的概念,它用于引用当前对象的父类中的成员。`super`关键字的使用主要有以下几个方面: 1. 访问父类的成员变量: 当子类和父类有同名的成员变量时,通过`super`关键字可以明确指定使用父类的成员变量。例如,在`ChildClass`中,`value`变量在子类和父类中都存在,但`super.value`表示引用父类`FatherClass`的`value`。 2. 调用父类的构造函数: 子类在构造函数中可以使用`super()`调用父类的无参构造函数,或者`super(参数列表)`调用父类的带参数构造函数。这在子类初始化时,确保父类的状态也被正确设置。例如,如果`FatherClass`有一个带参数的构造函数,可以在`ChildClass`的构造函数中使用`super(参数)`来调用。 3. 调用父类的方法: 类似于访问成员变量,当子类重写了父类的方法,`super`关键字也可以用来调用父类被重写的方法。在`ChildClass`的`f()`方法中,`super.f()`就是调用了父类`FatherClass`的`f()`方法。 ```java class FatherClass { public int value; public void f() { value = 100; System.out.println("FatherClass.value:" + value); } } class ChildClass extends FatherClass { private int value; public ChildClass() { super(); // 调用父类的默认构造函数 } public void f() { super.f(); // 调用父类的f()方法 value = 200; System.out.println("ChildClass.value:" + value); System.out.println(value); // 输出子类的value System.out.println(super.value); // 输出父类的value } } public class TestInHerit { public static void main(String args[]) { ChildClass cc = new ChildClass(); cc.f(); } } ``` 在上述示例中,当我们运行`TestInHerit`类的`main`方法,会输出如下结果: ``` FatherClass.value:100 ChildClass.value:200 200 100 ``` 这个输出反映了`super`关键字在方法调用和成员变量访问中的作用。`super.f()`执行父类`FatherClass`的`f()`方法,将父类的`value`设为100;然后,子类`ChildClass`的`f()`方法中,`value`被设为200,并分别输出了子类和父类的`value`。 至于内存分布,Java使用了类继承的层次结构来分配内存。每个对象都会有自己的实例变量,而继承自父类的变量也会在对象的内存空间中占有位置。在上述例子中,`FatherClass`的实例变量`value`在`ChildClass`的对象中也有一个副本。当创建`ChildClass`的实例时,会先初始化父类的实例变量,然后是子类的。`super`关键字在这里起到了在内存中找到父类成员的指针的作用。 `super`关键字是Java中实现多态性和继承的关键,它允许子类继承并扩展父类的功能,同时保留父类的原有行为。理解并正确使用`super`可以帮助开发者更好地理解和设计面向对象的程序。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。