一 super限定介绍
Java中允许通过关键字super来调用父类的方法或属性。
super不能出现在static修饰的方法中。
二 通过super限定访问父类的成员变量
1 代码示例
class BaseClass { public int a = 5; } public class SubClass extends BaseClass { public int a = 7; public void accessOwner() { System.out.println(a); } public void accessBase() { // 通过super来限定访问从父类继承得到的a实例变量 System.out.println(super.a); //a } public static void main(String[] args) { SubClass sc = new SubClass(); sc.accessOwner(); // 输出7 sc.accessBase(); // 输出5 } }
2 运行结果
7
5
3 结果分析
a变量在子类和父类都定义了。当系统创建SubClass对象时,实际上为SubClass对象分配两块内存,一块用于存储在SubClass类定义的a实例变量,一块用于存储从BaseClass类继承得到的a实例变量。
a处代码通过super限定访问从父类得到的a实例变量。
三 子类隐藏父类定义变量的内存运行图
1 代码示例
class Parent { public String tag = "父类"; //① } class Derived extends Parent { // 定义一个私有的tag实例变量来隐藏父类的tag实例变量 private String tag = "子类"; //② } public class HideTest { public static void main(String[] args) { Derived d = new Derived(); // 程序不可访问d的私有变量tag,所以下面语句将引起编译错误 // System.out.println(d.tag); //③ // 将d变量显式地向上转型为Parent后,即可访问tag实例变量 // 程序将输出:“父类” System.out.println(((Parent)d).tag); //④ } }
HideTest.java
2 运行结果
父类
3 结果分析
程序先创建一个Derived对象,这个对象保存两个tag实例变量,一个是父类的,一个是子类的,此时程序中包括一个d变量,引用了一个Derived对象,内存示意图如上。
程序在④行代码处先将d变量强制向上转为Parent类型,再通过它来访问tag实例变量是允许的,此时系统将访问1行粗体代码处定义的tag实例变量。
相关推荐
在 Java 泛型中,extends 和 super 是两个重要的关键字,它们分别用于限定类型的上界和下界。 extends 用于限定类型的上界,表示参数化类型可能是 T 或 T 的子类。例如: List<? extends Fruit> flist = new ...
Java编程泛型限定代码分享 Java编程泛型限定代码分享主要介绍了Java编程泛型限定的相关内容,具有一定参考价值,需要的朋友可以了解下。泛型一般出现在集合中,迭代器中也会出现!泛型是为了提高代码的安全性。泛型...
9. Java 中访问限定符包括 public、private、protected,default 不是访问限定符。 10. 在 Java 语言中,子类中可以使用 super 关键字调用父类的构造方法。 11. 在 Java 中,子类中可以定义和其父类中同名的成员...
4. Java类的基本要素:文档中涉及到了Java中的类定义、属性和方法的访问修饰符,如private、protected、public等,以及对类的继承机制的考察(如super关键字的使用)。 5. Java异常处理:文档提到了使用try-catch...
在同一个类中,可以通过`this()`来调用其他构造器,而`super()`用于调用父类的构造器。 3. `import`语句用于引入包中的类。使用`*`作为通配符表示导入包中的所有类,例如`import java.util.*;`。 4. 在Java中,...
在`StudentB`类的构造方法中,通过`super(newName)`调用了父类的带参数构造方法,这是Java中使用`super`关键字的典型应用。 2. **方法的覆盖**:当子类中定义了与父类同名且参数列表相同的方法时,称为方法覆盖。如...
private关键字是Java中的访问修饰符之一,它可以用来限定某个成员变量或方法的访问权限,即只有在同一个类中,才能访问该成员变量或方法。例如,在父类中声明了一个private的成员变量,那么在子类中将无法访问该成员...
- 泛型方法与泛型类:如何声明和使用,以及边界限定(如`<? extends T>`和`<? super T>`)。 - 泛型通配符:了解上界通配符、下界通配符的使用场景。 3. 集合框架 - List、Set和Queue的区别:理解各自的特点,...
在这个例子中,`Map`的键值对都被限定为`String`类型,因此不需要显式地进行类型转换,这增强了代码的安全性和可读性。 #### 泛型限制 虽然泛型提供了强大的功能,但在使用时也有一些限制需要注意: - **通配符**:...
- 在Java中,所有数据都是通过类来组织的。类是对象的模板,对象则是类的具体实例。 - 类体中定义的变量被称为成员变量,方法体内声明的变量称为局部变量。 - 成员变量可以分为静态变量(通过`static`关键字声明...
《CoreJava12示例代码》是一份针对Java编程语言深度学习的重要资源,主要涵盖了CoreJava12版本中的核心概念和特性。这份压缩包文件包含了丰富的示例代码,旨在帮助开发者深入理解Java语言的各个方面,提升编程技能。...
本书可能会深入探讨Java中的并发机制,包括但不限于以下内容: - **Thread类**:介绍如何创建和管理线程,以及如何控制线程的生命周期。 - **Runnable接口**:通过实现Runnable接口的方式创建线程,并探讨这种方式与...
- **解释**:尽管题目中的选项提到构造函数不可重载,但实际上Java中的构造函数是可以重载的,这意味着可以在同一个类中定义多个同名构造函数,只要它们的参数列表不同即可。 ### 实现多重继承的效果 - **知识点**...
在Java的学习过程中,了解并掌握一些关键的概念和特性至关重要。以下是一些重要的Java知识点,包括访问限定符、变量修饰符、嵌套类、变长参数、继承以及访问控制。 1. 访问限定符:Java提供了`public`、`private`和...
14. **访问限定符**:Java有public、private、protected和默认四种访问权限,分别控制成员的可见范围。 15. **接口**:接口不能直接创建对象,因为接口中的方法默认是抽象的。类可以实现接口,以满足多态的需求。 ...