java super关键字知识点详解

 更新时间:2021年01月19日 14:29:25   作者:小妮浅浅  
在本篇文章里小编给大家整理的是一篇关于java super关键字知识点详解内容,有兴趣的朋友们可以参考下。

在对一些父类的调用上,我们需要借助java中的关键字使用,这就是super关键字,可以归纳为三种方法:作用于类、方法名和构造函数。可以把它看做是使用父类的一个工具,相信大家在之前类的使用中有所接触。下面我们就super的说明、三种用法、注意事项进行说明,然后在实例中体会用法。

1.说明

super相当于是指代当前的对象的父类,调用父类的属性、方法和构造方法

2.用法

(1)super.变量/对象名;

使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作

(2)super.方法名();

直接访问并调用父类中的方法

(3)super();

调用父类的初始化方法,其实就是调用父类中的public xxx()方法,通常第三种指代的是super()的省略写法,系统会默认添加此句。

特殊情况:如果父类没有无参的构造函数,所以子类需要在自己的构造函数中显示的调用父类的构造函数,即不能使用系统默认的“super()”,而需要显性写出super(xxx)

3.注意事项

(1)表示调用父类的构造函数。也是一个特殊语法,不是变量,没有什么类型。

(2)可以在一个类的非static成员内部使用。比如super.method()。

但是,注意,这个super.method()只是长得跟some_var.method()一样,一个语法糖而已。实质上,"super"根本不是一个变量。

(3)super的另外一个作用是调用父类的protected函数。只有通过"super"这个魔咒,我们才能操作父类的protected成员,别无它法。

4.实例

class Person{
  private String name;
  private int age;
  public Person(String name){
    this.name = name;
  }
  public Person(String name, int age){
    this(name);  //this调用构造方法必须放在第一行,这里这样写是为了避免代码重复
    this.age = age;
  }
  public Person(){
    System.out.println("1.Person类的构造方法");
  }
}
class Student extends Person{
  private String school;
  public Student(){
    super("yy");
    System.out.println("Student类的构造方法");
  }
  public Student(String school){
    this();
    //super("yy");  //对super的调用必须在构造方法的第一行
    System.out.println("2.Student类的构造方法");
  }
}
public class Day6{
  public static void main(String[] args){
    Student stu = new Student("beida");
  }
}

知识点扩展:

java Super 用法详解

1)有人写了个很好的初始化属性的构造函数,而你仅仅想要在其中添加另一些自己新建属性的初始化,这样在一个构造函数中调用另外一个构造函数,可以避免重复的代码量,减少工作量;

2)在一个构造函数中调用另外一个构造函数的时候应该用的是同一块内存空间,在默认的构造函数中先初始化变量,调用另一个的时候覆写已经初始化的变量的值;

3)整个调用的过程和递归调用函数有点类似,不断充气球,直到整个气球膨胀起来,不断的深层递进,遇到停止标记,逐层的跳出来。

到此这篇关于java super关键字知识点详解的文章就介绍到这了,更多相关java super关键字是什么内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 从零搭建脚手架之集成Spring Retry实现失败重试和熔断器模式(实战教程)

    从零搭建脚手架之集成Spring Retry实现失败重试和熔断器模式(实战教程)

    在我们的大多数项目中,会有一些场景需要重试操作,而不是立即失败,让系统更加健壮且不易发生故障,这篇文章主要介绍了从零搭建开发脚手架之集成Spring Retry实现失败重试和熔断器模式,需要的朋友可以参考下
    2022-07-07
  • Admin - SpringBoot + Maven 多启动环境配置实例详解

    Admin - SpringBoot + Maven 多启动环境配置实例详解

    这篇文章主要介绍了Admin - SpringBoot + Maven 多启动环境配置,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java使用keySet方法获取Map集合中的元素

    Java使用keySet方法获取Map集合中的元素

    这篇文章主要为大家详细介绍了Java使用keySet方法获取Map集合中的元素,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Java中this和super的区别及this能否调用到父类使用

    Java中this和super的区别及this能否调用到父类使用

    这篇文章主要介绍了Java中this和super的区别及this能否调用到父类使用,this和super都是Java中常见的关键字,下文关于两者区别介绍,需要的小伙伴可以参考一下
    2022-05-05
  • Maven搭建springboot项目的方法步骤

    Maven搭建springboot项目的方法步骤

    这篇文章主要介绍了Maven搭建springboot项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Flink JobGraph生成源码解析

    Flink JobGraph生成源码解析

    这篇文章主要为大家介绍了Flink JobGraph生成源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • java中@requestMappling注解的使用

    java中@requestMappling注解的使用

    本文主要介绍了java中@requestMappling注解的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Java使用C3P0数据源链接数据库

    Java使用C3P0数据源链接数据库

    这篇文章主要为大家详细介绍了Java使用C3P0数据源链接数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java8处理集合的优雅姿势之Stream

    Java8处理集合的优雅姿势之Stream

    这篇文章主要给大家介绍了关于Java8优雅处理集合之Stream的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用java8具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Swing常用组件之单选按钮和复选框

    Swing常用组件之单选按钮和复选框

    Swing是一个用于开发Java应用程序用户界面的开发工具包,这篇文章主要介绍了Swing常用组件之单选按钮和复选框,感兴趣的朋友可以参考一下
    2016-05-05

最新评论