Java super关键字的用法详解

目录
  • super关键字的三种用法:
    • 1. super.成员变量
    • 2. super.成员方法
    • 3. super():调用父类中的构造方法
      • 3.1.1 隐式调用父类无参数构造方法super()
      • 3.1.2 显式调用父类有参数构造方法super(id)

super关键字作用:在子类内部调用父类对象

基础语法:

1.在类的继承中,当子类继承了父类, 在构造子类的时候,一定要先帮助父类进行构造;

2. 调用super()必须写在子类构造方法的第一行,以保证在执行任何动作前,对象已经完成了初始化,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。

super关键字的三种用法:

1. super.成员变量

class Person{
    public String name; //成员变量
    public Person(String name) {
        this.name = name;
    }
}
class Student extends Person{
    String name = "student";
    public Student(String name) {
        super(name);
    }
    public void help() {
        //调用父类的成员属性
        System.out.println(name); //student 直接使用,优先使用局部变量
        System.out.println(super.name); // B 直接使用父类的成员变量
    }
}
public class s {
    public static void main(String[] args) {
        Student p = new Student("B");
        p.help();
    }
}

2. super.成员方法

class {
    public String name;
    public Person(String name) {
        this.name = name; //Test
    }
    public void help() {
        System.out.println(this.name+"Person");
    }
}
class Student extends Person{
    String name = "student";
    public Student(String name) {
        super(name); //Test
    }
    public void help() {
        //调用父类的成员方法
        super.help();
        System.out.println(this.name+"Student"); //Student this调用的式同类中的变量
    }
}
public class s {
    public static void main(String[] args) {
        Student p = new Student("Test");
        p.help();
    }
}
//Test Person
//student Student

3. super():调用父类中的构造方法

3.1.1 隐式调用父类无参数构造方法super()

如果父类是无参构造,那么子类的构造方法会默认隐式的在第一行先调用父类无参数构造方法,所以super()无需手动进行调用;

public class Father{
    int id;
    public Father(){
        System.out.println("父类构造方法");
    }
}
public class Son extends Father{
    public Son(){
    	//super(); //系统会默认生成,可有可无
        System.out.println("子类构造方法");
    }
}
public class Test{
    public static void main(String[] args){
        Son s = new Son();
    }
}

//print:
//父类构造方法
//子类构造方法

3.1.2 显式调用父类有参数构造方法super(id)

如果父类是含参构造,那么此时因为父类中没有无参数构造方法,所以子类继承父类时会报错,这时就需要我们手动的调用父类的有参构造方法super(id);

public class Father{
    int id;
    public Father(int id){
        System.out.println("父类构造方法");
    }
}
public class Son extends Father{
    public Son(int id){
    	super(id); //手动调用父类的有参构造方法
        System.out.println("子类构造方法");
    }
}
public class Test{
    public static void main(String[] args){
        Son s = new Son(1);
    }
}

//print:
//父类构造方法
//子类构造方法

到此这篇关于Java super关键字的用法详解的文章就介绍到这了,更多相关Java super内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java super关键字知识点详解

    在对一些父类的调用上,我们需要借助java中的关键字使用,这就是super关键字,可以归纳为三种方法:作用于类.方法名和构造函数.可以把它看做是使用父类的一个工具,相信大家在之前类的使用中有所接触.下面我们就super的说明.三种用法.注意事项进行说明,然后在实例中体会用法. 1.说明 super相当于是指代当前的对象的父类,调用父类的属性.方法和构造方法 2.用法 (1)super.变量/对象名: 使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作 (2)super.方法名():

  • 详解怎么用Java的super关键字

    Java的super关键字 当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法.为了解决这个问题,在Java中专门提供了一个super关键字来访问父类的成员,例如访问父类的成员变量.成员方法和构造方法.下面分两种情况来学习一下super关键字的具体用法. (1)使用super关键字调用父类的成员变量和成员方法,具体格式如下: super.成员变量 super.成员方法([参数1,参数2...]) 接下来通过一个案例来学习如何使用super关键字调用父类的成员变量和成员方法,如文件1所

  • Java super关键字调用父类过程解析

    这篇文章主要介绍了Java super关键字调用父类过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 话不多说,直接上代码: package com.my.pac14; /** * @auther Summerday */ public class SuperTest { public static void main(String[] args) { SubClass sb = new SubClass(20); //创建子类的对象,调

  • 关于java关键字this和super的区别和理解

    this: this理解为:当前对象 或 当前正在创建的对象 可以调用的结构:属性.方法:构造器 this调用属性.方法: 先了解一下形参: 形参的意义就是给属性赋值,我们是要给同名的属性赋值,这时候我们就把形参名和属性的名字写成一样,这样我们就知道我们传入的形参就是要给我们同名的属性去赋值的. 在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法.但是, 通常情况下,我们都择省略"this.".特殊情况

  • Java super关键字的使用方法详解

    构造方法中的super关键字 在Java子类的构造方法中可以通过super关键字来调用父类的构造方法.其用法为: 1) super(); 访问父类中的无参构造函数 2) super (paras-); 访问父类中的成员函数yyy super()来调用父类无参的构造方法,但即使不使用super(),默认也会调用父类无参的构造方法.父类无参的构造方法可以是自定义的无参构造方法,也可以是编译器自动生成的默认构造方法.但如果父类中定义了有参的构造方法,但没有定义无参的构造方法,这时编译器不会生成默认构造

  • Java中super和this的用法详解

    super 用法 super关键字用来访问父类内容,具体用法可分为三种: 1.子类的成员方法访问父类的成员变量 public class Animal { public int age = 10; } class Dog extends Animal { public int age = 5; public void showAge() { System.out.println(super.age); } } 2.子类的成员方法访问父类的成员方法 public class Animal { pu

  • Java 中的 this 和 super 区别

    目录 1.简介 2.引子 2.1 父类中声明无参构造函数 2.2 子类显示的通过super调用父类的有参构造函数 3.this 4.super 5.总结 5.1 对比差异 5.2 相同点 5.3 总结图 1.简介 this与super是类实例化时通往Object类通道的打通者:this和super在程序中由于其经常被隐式的使用而被我们忽略,但是理解其作用和使用规范肯定是必须的.接下来将详述this与super的作用和区别. 2.引子 先来看两段代码,无报错代码示例: package com.li

  • Java中超详细this与super的概念和用法

    前言:理论和代码必须结合起来才能真正的掌握 一.this 概念:this代表着当前对象的引用,也是当前函数所属对象的引用.直白的说,哪个对象调用了当前函数,this就代表哪个对象. 常见的用法(理论不理解就先参考下面案例) 最常见的情况是是对象的一个属性或被构造器的参数屏蔽时,如果需要调用屏蔽的属性,this就代表哪个对象 this只能在方法内使用,表示正在调用方法的那个对象,但是,如果在方法内调用同一个类的另一个方法,就不必使用this,直接调用即可,this关键字是能省则省 this和sta

  • java中调用super的实例讲解

    在java中类之间也是有着继承关系的,就我们之前有提到不少父类与子类的一些问题. 讲的以子类的调用为主,那么有小伙伴知道父类的调用方法吗?这里我们需要借助关键字super来实现.下面我们就来讲讲super的概念.调用方法.应用范围,帮助大家找到使用supei调用父类的方法. 1.概念 super关键字用于引用使用该关键字的类的超类. 作为独立语句出现的 super 表示调用超类的构造方法. 2.调用超类方法 super.<methodName>() 只有在如下情况中才需要采用这种用法:要调用在

  • Java super关键字用法实战案例分析

    本文实例讲述了Java super关键字用法.分享给大家供大家参考,具体如下: 一 点睛 如果子类继承了父类的数据成员,这时就需要调用父类的有参构造方法,来初始化来自父类的数据成员,这时就需要显示的调用父类中的有参构造方法super(参数1,参数2). 二 实战--super调用父类中的构造方法 1 代码 class Person { String name; int age; public Person( String name, int age ) // 父类的构造方法 { this.nam

随机推荐