java 关键字super详解及用法

Java 关键字super详解及用法

在 Java 编程中,我们经常会遇到需要在派生类中调用父类的方法或访问父类的属性的情况。这时就需要用到 Java 关键字 super。本文将详细讲解 Java 关键字 super 的用法及示例说明。

1. super 的作用

  • 访问父类的属性
  • 调用父类的方法
  • 调用父类的构造方法

2. super 访问父类的属性

使用 super 关键字可以访问父类中的属性。

以下是示例代码:

class Parent {
    String name = "Parent";
}

class Child extends Parent {
    String name = "Child";

    void printNames() {
        System.out.println("Child name = " + name);
        System.out.println("Parent name = " + super.name);
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
        child.printNames();
    }
}

运行结果:

Child name = Child
Parent name = Parent

分析:在 Child 类中,我们定义了一个名为 name 的属性,与父类 Parent 中的属性同名。若在 Child 类中直接使用 name,则会访问到子类中的属性;若要访问父类中同名的属性,使用 super.name 即可。

3. super 调用父类的方法

使用 super 关键字可以调用父类中的方法。

以下是示例代码:

class Parent {
    void show() {
        System.out.println("This is Parent");
    }
}

class Child extends Parent {
    @Override  // 覆写父类方法
    void show() {
        super.show();  // 调用父类方法
        System.out.println("This is Child");
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
        child.show();
    }
}

运行结果:

This is Parent
This is Child

分析:在 Child 类中,我们覆写了父类 Parent 中的 show() 方法,并在子类方法中调用了 super.show(),即调用了父类中的 show() 方法,并在子类方法中添加了新的内容。

4. super 调用父类的构造方法

使用 super 关键字可以调用父类的构造方法。

以下是示例代码:

class Parent {
    String name;

    Parent() {
        name = "Parent";
    }
}

class Child extends Parent {
    Child() {
        super();  // 调用父类无参构造方法
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
        System.out.println(child.name);
    }
}

运行结果:

Parent

分析:在 Child 类中,我们定义了一个无参构造方法,并在其中使用 super() 调用了父类的无参构造方法,即 Parent 的构造方法。这样可以确保子类对象在实例化时先初始化父类部分的属性。

5. 总结

super 关键字在 Java 编程中具有重要作用,可以实现对父类属性、方法和构造方法的访问或调用。熟练掌握 super 关键字的用法,有助于程序的编写。

以上是 Java 关键字 super 的详细讲解及示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 关键字super详解及用法 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Vue项目通过network的ip地址访问注意事项及说明

    Vue项目通过network的ip地址访问需要注意以下几点: 1. 确认本地IP地址 首先需要确认本机的IP地址,可以在Windows系统下使用ipconfig命令(如下示例)或者在MacOS系统下使用ifconfig命令,从命令行中获取本机的IP地址。 // Windows系统下获取本机IP地址的命令 ipconfig // MacOS系统下获取本机IP地…

    other 2023年6月27日
    00
  • 学习Javascript面向对象编程之封装

    下面我将详细讲解学习Javascript面向对象编程之封装的完整攻略。 什么是封装 封装(Encapsulation)是一种将数据与操作数据的方法表示为一个单一实体(即类)的技术。封装可以使得类的对象被访问时不能直接访问对象的状态,而是通过类公开的接口进行操作。封装有助于提高代码的安全性和可维护性。 如何封装 在JavaScript中,封装通常通过构造函数和…

    other 2023年6月26日
    00
  • 右键无法新建TXT文档的问题解决

    下面是详细讲解“右键无法新建TXT文档的问题解决”的完整攻略: 问题描述 在右键菜单中选择”新建文本文档“时,发现无法创建TXT文件。 解决方案1 – 修改注册表 打开注册表编辑器,方法为按下Win+R,并在运行框中输入”regedit.exe“,按Enter键打开注册表编辑器。 找到HKEY_CLASSES_ROOT.txt,如果该项不存在就需要创建,方法…

    other 2023年6月27日
    00
  • 深入理解JavaScript中的块级作用域、私有变量与模块模式

    块级作用域:块级作用域(Block Scope)允许你创建受保护的变量,这些变量只能在当前的块中被访问。在ES6之前,JavaScript中并没有块级作用域的概念,只有全局作用域和函数作用域。在ES6中新增了let和const关键字,它们可以用来声明块级作用域的变量。 示例: // 使用let声明块级作用域的变量 function foo() { if (t…

    other 2023年6月26日
    00
  • android获取文件夹、文件的大小以b、kb、mb、gb为单位

    以下是“Android获取文件夹、文件的大小以B、KB、MB、GB为单位”的完整攻略: Android获取文件夹、文件的大小以B、KB、MB、GB单位 在Android中,我们可以使用Java的File类来获取文件夹、文件的大小。以下是使用Java的File类获取文件夹、文件大小的步骤: 1. 获取文件夹大小 我们可以使用以下代码获取文件夹的大小: publ…

    other 2023年5月7日
    00
  • spring-cloud-starter

    以下是关于“Spring Cloud Starter”的完整攻略,包含两个示例。 Spring Cloud Starter Spring Cloud Starter是一个Spring Cloud项目的起点依赖。它包含了Spring Cloud项目中最常用的依赖项,可以帮助快速构建Spring Cloud应用程序。以下是关于如何使用Spring Cloud S…

    other 2023年5月9日
    00
  • cssfilter属性详解

    下面是关于“CSS filter属性详解”的完整攻略: 1. CSS filter属性说明 CSS filter属性是一个用于图像处理的CSS3属性,可以对元素的可视化效果进行处理。通过使用不同的镜函数,可以实现图像的模糊、颜色调整、亮度调整、对比度调整、灰度化等效果。 2. CSS filter属性语法 CSS filter属性的语法如下: filter:…

    other 2023年5月7日
    00
  • java-将intwritatble转换为int

    在Hadoop MapReduce中,IntWritable是一种常用的数据类型,它表示一个整数。有时候,我们需要将IntWritable转换为Java中的int类型。本文将介绍如何将IntWritable转换int类型提供两个示例说明。 示例一:使用IntWritable的get方法 IntWritable类提供了一个get()方法,可以将IntWrita…

    other 2023年5月9日
    00
合作推广
合作推广
分享本页
返回顶部