java基础 --- super关键字

Posted Overboom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础 --- super关键字相关的知识,希望对你有一定的参考价值。

1. super关键字的作用

如果一个类从另一个类继承,我们new这个子类的示例对象的时候,这个子类对象类里面会有一个父类对象,怎么去引用这个父类对象呢?

java中使用super来引用,super是当前对象里面的父对象的引用。

2. super的用法

super在java中有两种用法,下面分别阐述。

2.1 使用super关键字访问父类的成员

package cn.galc.test;

/**
 * 父类
 * @author gacl
 *
 */
class FatherClass {
    public int value;
    public void f() {
        value=100;
        System.out.println("父类的value属性值="+value);
    }
}

/**
 * 子类ChildClass从父类FatherClass继承
 * @author gacl
 *
 */
class ChildClass extends FatherClass {
    /**
     * 子类除了继承父类所具有的valu属性外,自己又另外声明了一个value属性,
     * 也就是说,此时的子类拥有两个value属性。
     */
    public int value;
    /**
     * 在子类ChildClass里面重写了从父类继承下来的f()方法里面的实现,即重写了f()方法的方法体。
     */
    public void f() {
        super.f();//使用super作为父类对象的引用对象来调用父类对象里面的f()方法
        value=200;//这个value是子类自己定义的那个valu,不是从父类继承下来的那个value
        System.out.println("子类的value属性值="+value);
        System.out.println(value);//打印出来的是子类自定义的那个value的值,这个值是200
        System.out.println(super.value);
    }
}

/**
 * 测试类
 * @author gacl
 *
 */
public class TestInherit {
    public static void main(String[] args) {
        ChildClass cc = new ChildClass();
        cc.f();
    }
}

运行结果:

2.2 使用super关键字访问父类的构造方法

子类调用父类构造方法时:super必须放在子类构造方法的第一行,且只能出现一次。

class A{

    String name;

    A(){

        System.out.println("父类默认隐式的构造方法!");

    }

   

    A(String name){

        System.out.println("父类显式的构造方法!");

    }

}

 

class B extends A{

   

    B(){

        super(null);

        System.out.println("子类默认隐式的构造方法!");

    }

}

 

public class Demo10 {

    public static void main(String[] args) {

        new B();

    }

}

输出结果:

父类显式的构造方法!

子类默认隐式的构造方法!

 

参考链接:

https://blog.csdn.net/qq_44357792/article/details/95521796?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs

https://www.cnblogs.com/xdp-gacl/p/3635948.html

https://blog.csdn.net/u012518665/article/details/80353225

以上是关于java基础 --- super关键字的主要内容,如果未能解决你的问题,请参考以下文章

java基础之super关键字

java基础 --- super关键字

java基础 --- super关键字

JAVA基础(十六)Super关键字

零基础学Java|在实例方法中如何使用super关键字

Java8基础之super关键字