详细介绍java关键字super

焦挺
• 阅读 1182

大家好,这里是可傥。由于最近比较忙,好久没更新了,今天,我们继续更新java关键字super。
super其实可以结合this来解释。this代表当前对象的引用。super代表父类对象的引用。接下来,具体结合变量,方法展开说明。

一、调用父类的成员变量

结合下面代码:

public class Parent {
    public String name;

}

public class Son extends Parent {

    public void printName(){
        System.out.println(super.name);
    }

}

子类通过super.属性名来直接调用父类的成员变量name。

二、调用父类的方法

结合下面代码:

public class Parent {
    public String name;

    public void setName(String name){
        this.name = name;
    }
}

public class Son extends Parent {

    public void printName(){
        super.setName("ketang");//调用父类方法,给父类对象的name设置值
        System.out.println(super.name);//调用父类属性为ketang
    }

    public static void main(String[] args) {
        Son son = new Son();
        son.printName();//输出ketang
    }
}

子类通过super.方法的方式调用父类对象的方法。

三、父类的构造方法

前面两个都相对好理解,这边具体说说父类的构造方法,在java中,除了类Object之外,其他类都有自己的父类,在类加载时都会先去加载父类。那么什么时候去调用父类的构造方法的呢?
其实,在调用子类的构造方法中,他隐形调用了super();在都是默认无参构造器的情况下,实际情况如下代码:

public class Parent {

    public Parent(){
        System.out.println("父类构造方法");
    }
}

public class Son extends Parent {

    public Son(){
        //super();实际在调用子类构造方法前,会先super(),先调用父类的构造方法。
        System.out.println("子类构造方法");
    }

    public static void main(String[] args) {
        Son son = new Son();
    }

}

那么有的人可能会问,那如果父类只有有参构造方法,那子类如何调用呢?这个时候,子类的构造方法就必须写出来,且要把super(参数...args)放在子类构造方法的第一行。如下代码:

public class Parent {
    private String name;

    public Parent(String name){
        this.name = name;
        System.out.println("父类有参构造方法,无无参构造方法");
    }
}

public class Son extends Parent {

    public Son(){
        super("ketang");//必须要加,不然就会报错
        System.out.println("子类无参构造方法");
    }
    public static void main(String[] args) {
        Son son = new Son();
    }

}

而且,super关键字和this关键字一样,构造方法中必须出现在第一行哦,不然就会报错。所以这也就说明,this()和super()是不能同时出现在构造方法中的。
super的关键字就聊到这,这里是可傥,将会分享自己的所学以及所得,欢迎大家一起交流。csdn地址:https://blog.csdn.net/kaneand...

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java中static的作用详解
java中static关键字表示静态的意思,主要用于以下三点,static成员变量,static成员方法和static块。在类中如果定义了static类型的对象(变量或者方法),在java虚拟机(JVM)加载类时,该对象就会被实例化,在使用的时候就不需要再去实例化,直接调用就可以了。常与private,public搭配使用。下面详细说一下这三部分。1
Wesley13 Wesley13
3年前
java中多态的实现机制
多态的概念:  简单来说就是事物在运行过程中存在的不同状态,即父类或接口定义的引用变量指向子类或具体实现类的实例对象。程序调用方法在运行期才进行动态绑定,而不是引用变量的类型中定义的方法。多态存在的前提:1、存在继承关系,子类继承父类;2、子类重写父类的方法;3、父类引用指向子类对象。具体实例:1、定义一个父类:Animal
待兔 待兔
4年前
Java多态实现原理
Java多态概述多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。Java对于方法调用动态绑定的实现主要依赖于方法表,但通过类引用调用(invokevirtual)和接口引用调用(invokeinterface)的实现则有所不同。类引用调用的大致过程为:Java编译器将Java源代码编译成c
Stella981 Stella981
3年前
Python中super的用法
super是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。总之前人留下的经验就是:保持一致性。要不全部用类名调用父类,要不就全部用super,不要一半一半。普通继承classFooParent(object):de
Stella981 Stella981
3年前
Python Day24:类的继承、派生、覆盖、super()、绑定、非绑定方法
类的继承、派生、覆盖、super()python类的继承:子类继承父类,只需要在定义类的时候在类名后面加上(父类名)。继承之后,父类的属性方法、子类都可以访问派生:子类继承父类后,自己在父类的基础上,又添加了一些属于自己特性的属性、方法
Wesley13 Wesley13
3年前
Java之super关键字
\toc\Java之super关键字话不多说,直接上代码:packagecom.my.pac14;/@autherSummerday/publicclassSuperTest{publicstaticvoidm
Stella981 Stella981
3年前
Python3中的super()函数详解
关于Python3中的super()函数我们都知道,在Python3中子类在继承父类的时候,当子类中的方法与父类中的方法重名时,子类中的方法会覆盖父类中的方法,那么,如果我们想实现同时调用父类和子类中的同名方法,就需要使用到super()这个函数,用法为super().函数名()下面是一个例子:
Wesley13 Wesley13
3年前
Java基础学习总结(8)——super关键字
一、super关键字  在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。
Stella981 Stella981
3年前
Smali语法学习四
HelloWorldAHelloWorldDEMO.classpublicLHelloworld;第一行是类的声明.superLjava/lang/Object;super关键字,是父类的声明.methodpublicstaticmain(Ljava/lang/Stri
Stella981 Stella981
3年前
ES6对象的super关键字
super是es6新出的关键字,它既可以当作函数使用,也可以当作对象使用,两种使用方法不尽相同1.super用作函数使用的时候,代表父类的构造函数,es6规定在子类中使用this之前必须先执行一次super函数,super相当于Father.prototype.constructor.call(this)classFather{
Stella981 Stella981
3年前
JVM调优总结一
数据类型   Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,cha