首页 > 编程语言 >Java中super关键字的学习

Java中super关键字的学习

时间:2024-08-29 18:27:51浏览次数:5  
标签:调用 Java 构造方法 子类 value 关键字 父类 super

super关键字


目录

在Java中,super是一个关键字,它主要用于在子类中引用父类的成员(包括字段、方法和构造方法),或者用于解决子类和父类之间的命名冲突。以下是super关键字的具体用法:

1. 访问父类的成员变量

当子类中存在与父类同名的成员变量时,可以使用super关键字来访问父类的成员变量。这有助于区分子类中的成员变量和从父类继承而来的成员变量。

class Parent {
    int value = 10;
}

class Child extends Parent {
    int value = 20;
    void display() {
        System.out.println("Child class value: " + this.value); // 访问子类自己的value
        System.out.println("Parent class value: " + super.value); // 访问父类的value
    }
}

2. 调用父类的方法

在子类中,可以使用super关键字来调用父类的方法。这通常用于在子类的方法实现中,需要调用父类相同名称的方法时。

class Parent {
    void display() {
        System.out.println("Parent class display()");
    }
}

class Child extends Parent {
    void display() {
        super.display(); // 调用父类的display方法
        System.out.println("Child class display()");
    }
}

3. 调用父类的构造方法

在子类的构造方法中,super关键字用于调用父类的构造方法。这通常用于初始化从父类继承而来的成员变量或执行父类的构造逻辑。需要注意的是,super()调用必须是子类构造方法中的第一条语句(如果父类没有无参构造方法,并且子类的构造方法中没有显式调用父类的其他构造方法,则会编译错误)。

class Parent {
    Parent(int value) {
        // 父类构造方法实现
    }
}

class Child extends Parent {
    Child(int value) {
        super(value); // 调用父类的构造方法
        // 子类构造方法的其他实现
    }
}

4. 在实现接口的类中调用接口的默认方法

当类实现了接口,并且该类中定义了与接口默认方法同名的方法时,可以使用接口名.super.方法名()的语法来调用接口的默认方法。

interface MyInterface {
    default void myMethod() {
        System.out.println("Default method in interface");
    }
}

class MyClass implements MyInterface {
    void myMethod() {
        System.out.println("Class method");
        MyInterface.super.myMethod(); // 调用接口的默认方法
    }
}

注意事项

  • super关键字只能在子类中使用。
  • 在子类的构造方法中,如果没有显式调用父类的构造方法,则会隐式调用父类的无参构造方法(如果父类存在无参构造方法的话)。如果父类没有无参构造方法且子类构造方法中没有显式调用父类的其他构造方法,则会导致编译错误。
  • super关键字不能用于访问或调用祖先类的成员,它只能用于访问直接父类的成员。

综上所述,super关键字在Java中是一个非常重要的概念,它使得子类能够方便地访问和调用父类的成员,以及解决子类和父类之间的命名冲突。

标签:调用,Java,构造方法,子类,value,关键字,父类,super
From: https://www.cnblogs.com/BingBing-8888/p/18387363

相关文章

  • java毕业设计-基于springboot+vue的高校自习室预约系统设计和实现,基于springboot+vue
    文章目录前言演示视频项目架构和内容获取(文末获取)项目相关文件系统功能部分实现截图架构设计MVC的设计模式基于B/S的架构技术栈具体功能模块设计系统需求分析可行性分析系统测试为什么我?关于我我自己的网站项目开发案例前言博主介绍:✌️码农一枚,专注于大学生项目......
  • Java面试题--1基础篇-03 __八股文 备战春招,秋招
    八、泛型Java中的泛型是什么?泛型是JDK1.5的一个新特性,**泛型就是将类型参数化,其在编译时才确定具体的参数。**这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。使用泛型的好处是什么?远在JDK1.4版本的时候,那时候是没有泛型的概......
  • Java面试题--2集合篇-01 __八股文 备战春招,秋招
    1.常见的集合有哪些?Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系。注意:Collection是一个接口,Collections是一个工具类,Map不是Collectio......
  • Java算法之Gnome 排序
    简介Gnome排序,又称为双向插入排序或鸡尾酒排序,是一种改进的插入排序算法。它在每次迭代中不仅将最小的元素移动到前面,同时也将最大的元素移动到后面。这种排序算法在每次迭代中同时向两个方向进行移动,因此得名。算法步骤从数组的两端开始,向中间进行扫描。如果左侧元素大于......
  • Java算法之基数排序(Radix Sort)
    简介基数排序是一种非比较型整数排序算法,其原理是按照低位先排序,然后收集,再按照高位排序,再收集,依次类推,直到最高位。这种方法可以视为对每个位上的数字进行稳定的排序。算法步骤确定最大数的位数。对每一位进行排序:从最低位开始,使用稳定的排序算法(如计数排序)对当前位进......
  • 基于Java的民宿管理系统
    系统包含:源码+论文所用技术:SpringBoot+Vue+SSM+Mybatis+Mysql免费提供给大家参考或者学习,获取资料请私聊我目录第1章绪论 11.1选题动因 11.2目的和意义 11.3论文结构安排 2第2章开发环境与技术 32.1MYSQL数据库 32.2Tomcat介绍 32.3vue技术 42.4Sp......
  • 基于Java的银行账目账户管理系统的设计与实现
    系统包含:源码+论文所用技术:SpringBoot+Vue+SSM+Mybatis+Mysql免费提供给大家参考或者学习,获取资料请私聊我目录第1章绪论 11.1选题动因 11.2目的和意义 11.3论文结构安排 2第2章开发环境与技术 32.1MYSQL数据库 32.2Tomcat介绍 32.3vue技术 42.4Sp......
  • Java Excel转PDF(免费)
    目前市面上Excel转PDF的组件较多:收费:aspose、GcExcel、spire开源:jacob、itextpdf其中收费的组件封装得比较好,代码简洁,转换的效果也很好,但收费也高得离谱:为了成本考虑,就需要考虑开源的组件了,因为它们都是免费的:jacob:目前没有探索出很好的导出效果。itextpdf:已探索出......
  • java在centos7下部署运行jar包
    1、执行jar包的命令和在windows操作系统上是一样java-jarjarName-0.0.1-SNAPSHOT.jar;注:关闭服务器连接时会关闭此程序进程,(推荐测试可用)2、将jar程序设置成后台运行,并且将标准输出的日志重定向至文件msg.lognohupjava-jarjarName-0.0.1-SNAPSHOT.jar>msg.log2>&......
  • Effective Java理解笔记系列-第2条-何时考虑用构建器?
    类中有几个必选参数,且存在大量可选参数时。大量指至少有4个可选指大部分实例只在某几个可选域存在非零值,其他都是零。如:publicclassNutritionFacts{ privatefinalintservingSize;//每份含量,必选 privatefinalintservings;//每罐含量,必选 privatefinalintcalor......