Superclass References and Subclass Objects
💡
原文约400字/词,阅读约需2分钟。
📝
内容提要
Java是一种强类型语言,对原始类型进行默认转换和自动提升。类型兼容性严格执行,一个类的引用变量不能引用另一个类的对象。但是,超类的引用变量可以引用任何派生自该超类的子类对象。子类的引用赋值给超类的变量时,只能访问超类定义的成员。子类引用赋值给超类变量是常见的,特别是在调用类层次结构的构造函数时。子类可以从接收超类对象作为参数的构造函数中受益,从而创建对象的副本。
🎯
关键要点
- Java是一种强类型语言。
- 对原始类型进行默认转换和自动提升。
- 类型兼容性严格执行。
- 一个类的引用变量不能引用另一个类的对象。
- 超类的引用变量可以引用任何派生自该超类的子类对象。
- 子类引用赋值给超类的变量时,只能访问超类定义的成员。
- 子类引用赋值给超类变量是常见的,特别是在调用类层次结构的构造函数时。
- 子类可以从接收超类对象作为参数的构造函数中受益,创建对象的副本。
- 构造函数Triangle接收Triangle类型的对象并传递给TwoDShape构造函数。
- TwoDShape构造函数初始化属于TwoDShape类的成员。
- 可以将子类对象的引用传递给超类构造函数。
❓
延伸问答
Java中的类型兼容性是如何执行的?
Java严格执行类型兼容性,类的引用变量不能引用另一个类的对象,除非是超类的引用变量可以引用其派生的子类对象。
超类引用变量可以引用哪些对象?
超类的引用变量可以引用任何派生自该超类的子类对象。
子类引用赋值给超类变量时有什么限制?
子类引用赋值给超类变量时,只能访问超类定义的成员,无法访问子类特有的成员。
子类如何从超类构造函数中受益?
子类可以通过接收超类对象作为参数的构造函数,创建对象的副本,从而受益于超类的构造函数。
在Java中,如何使用超类构造函数初始化子类对象?
在子类构造函数中,可以通过super关键字将子类对象传递给超类构造函数,从而初始化超类的成员。
Java中构造函数的调用顺序是怎样的?
在创建子类对象时,首先调用超类的构造函数,然后再执行子类的构造函数。
➡️