Superclass References and Subclass Objects

💡 原文约400字/词,阅读约需2分钟。
📝

内容提要

Java是一种强类型语言,对原始类型进行默认转换和自动提升。类型兼容性严格执行,一个类的引用变量不能引用另一个类的对象。但是,超类的引用变量可以引用任何派生自该超类的子类对象。子类的引用赋值给超类的变量时,只能访问超类定义的成员。子类引用赋值给超类变量是常见的,特别是在调用类层次结构的构造函数时。子类可以从接收超类对象作为参数的构造函数中受益,从而创建对象的副本。

🎯

关键要点

  • Java是一种强类型语言。
  • 对原始类型进行默认转换和自动提升。
  • 类型兼容性严格执行。
  • 一个类的引用变量不能引用另一个类的对象。
  • 超类的引用变量可以引用任何派生自该超类的子类对象。
  • 子类引用赋值给超类的变量时,只能访问超类定义的成员。
  • 子类引用赋值给超类变量是常见的,特别是在调用类层次结构的构造函数时。
  • 子类可以从接收超类对象作为参数的构造函数中受益,创建对象的副本。
  • 构造函数Triangle接收Triangle类型的对象并传递给TwoDShape构造函数。
  • TwoDShape构造函数初始化属于TwoDShape类的成员。
  • 可以将子类对象的引用传递给超类构造函数。

延伸问答

Java中的类型兼容性是如何执行的?

Java严格执行类型兼容性,类的引用变量不能引用另一个类的对象,除非是超类的引用变量可以引用其派生的子类对象。

超类引用变量可以引用哪些对象?

超类的引用变量可以引用任何派生自该超类的子类对象。

子类引用赋值给超类变量时有什么限制?

子类引用赋值给超类变量时,只能访问超类定义的成员,无法访问子类特有的成员。

子类如何从超类构造函数中受益?

子类可以通过接收超类对象作为参数的构造函数,创建对象的副本,从而受益于超类的构造函数。

在Java中,如何使用超类构造函数初始化子类对象?

在子类构造函数中,可以通过super关键字将子类对象传递给超类构造函数,从而初始化超类的成员。

Java中构造函数的调用顺序是怎样的?

在创建子类对象时,首先调用超类的构造函数,然后再执行子类的构造函数。

➡️

继续阅读