迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的超级构造函数

作者:迹忆客 最近更新:2023/11/13 浏览次数:

本文将讨论 super 关键字以从其子类调用父类的变量、函数和构造函数。

以下部分展示了如何使用 super() 调用子类父级的构造函数。


在 Java 中使用带有无参数构造函数的 super()

当我们在 Java 中使用继承的概念时,就会使用 super 关键字。

当我们使用关键字 extends 继承一个类时,我们得到被继承的类:父类或超类,继承父类的类称为子类或子类。

我们使用 super() 来调用父类的构造函数。尽管如此,假设我们要调用默认构造函数或不带任何父类参数的构造函数。

在这种情况下,我们不需要调用 super(),因为它会在构造函数创建时自动调用。

为了更好地理解它,让我们看两个例子。在下面的第一个示例中,我们有三个类。

Vehicle 类中,我们在其无参数构造函数中打印一条消息。Motorcycle 类使用 extends 关键字继承 Vehicle,使 Vehicle 成为超类,Motorcycle 成为子类。

我们在 Motorcycle 类中打印类似 Vehicle 构造函数的消息。当我们使用 new 关键字创建 Motorcycle 的对象时,会调用类的构造函数。

请注意,Vehicle 类的构造函数也称为 Motorcycle 构造函数。发生这种情况是因为每个无参数和默认构造函数调用都附加了一个 super()

class Vehicle {
  Vehicle() {
    System.out.println("Vehicle Class Constructor Called");
  }
}

class Motorcycle extends Vehicle {
  Motorcycle() {
    System.out.println("Motorcycle Class Constructor Called");
  }
}

class ExampleClass1 {
  public static void main(String[] args) {
    new Motorcycle();
  }
}

输出:

Vehicle Class Constructor Called
Motorcycle Class Constructor Called

在 Java 中使用带有参数化构造函数的 super()

与无参数构造函数自动调用 super() 不同,参数化构造函数不会调用它,我们需要使用参数调用它。

在示例中,我们有与上述程序相同的类,但 Vehicle 类的构造函数在该程序中接收一个参数。

现在,如果我们尝试从 Motorcycle 的构造函数中调用 super(),我们会收到错误,因为 Vehicle 构造函数需要一个参数。

为了解决这个问题,我们需要在创建对象时在 Motorcycle 的构造函数中传递的 super() 中传递一个参数。

class Vehicle {
  Vehicle(String str) {
    System.out.println("Vehicle Class Constructor Called");
  }
}

class Motorcycle extends Vehicle {
  Motorcycle(String str) {
    super(str);
    System.out.println("Motorcycle Class Constructor Called");
  }
}

class ExampleClass1 {
  public static void main(String[] args) {
    new Motorcycle("example string");
  }
}

输出:

Vehicle Class Constructor Called
Motorcycle Class Constructor Called

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java 中的实例化是什么意思

发布时间:2023/11/14 浏览次数:100 分类:Java

本文讲授 Java 中的实例化主题。本文介绍了 Java 中的实例化概念。我们在 Java 中使用对象是因为它是一种面向对象的编程语言。

Java 中的可变参数

发布时间:2023/11/14 浏览次数:125 分类:Java

本文介绍了 Java 中的可变参数。变量参数 varargs 是 Java 中的一个概念。我们可以为方法提供可变数量的参数零或多个参数。

Java 中的静态块

发布时间:2023/11/14 浏览次数:111 分类:Java

本文介绍了静态块及其在 Java 中的用途。Java 在对象初始化之前使用静态块来执行代码。当我们用 static 关键字声明一个块时,我们称它为静态块。

在 Java 中实现树

发布时间:2023/11/14 浏览次数:104 分类:Java

本文教你在 Java 中如何实现树在本文中,我们将看到两种在 Java 中创建树结构的方法。树结构在多种方面都很有用,例如创建文件夹和文件名的目录。

Java 中的红黑树

发布时间:2023/11/14 浏览次数:58 分类:Java

在本教程中,我们将探索 Java 的红树和黑树。我们将讨论它们的评价和属性。首先,我们将从数据结构的角度演示如何使用它。稍后,我们将向你展示一些使用 Java 程序的旋转、搜索和

在 Java 中打印堆栈

发布时间:2023/11/14 浏览次数:146 分类:Java

本文介绍如何在 Java 中打印堆栈值。堆栈是一种数据结构,允许用户以后进先出模式添加元素。元素被添加到一个集合中,第一个插入的元素出现在最后一个。

Java 中的堆栈 pop 和 push 方法

发布时间:2023/11/14 浏览次数:85 分类:Java

这篇文章讲述了在 Java 中实现栈中的 pop 和 push 方法的方法。push 操作将一个元素添加到堆栈的最顶部位置,而 pop 操作删除堆栈的最顶部元素。我们将在下面的部分中介绍如何将堆栈的概念与

Java 中的单元测试

发布时间:2023/11/14 浏览次数:64 分类:Java

本文描述了 Java 中的单元测试,并展示了一个使用 JUnit 测试框架的简单示例。本文将讨论 Java 中的单元测试。有几种类型的测试,单元测试就是其中之一。

Java 中的箭头运算符 ->

发布时间:2023/11/14 浏览次数:99 分类:Java

这篇文章就是要了解 Java 中的箭头运算符。本文介绍了箭头运算符 (->) 在 Java 中的作用,并列出了一些示例代码来理解该主题。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便