Java中super关键字的使用

Java中super关键字的使用

1、使用super操作呗隐藏的成员变量和方法

​ 子类一旦隐藏了继承的成员变量,那么子类创建的对象就不再拥有该变量,该变量将归super所拥有。同样的,对于隐藏的方法调用也是有super所有。下面将举例说明用法:

public class SuperTest {
    static class Sum{
        int n;
        int f(){
           int sum = 0;
            for (int i = 1; i <= n; i++) {
                sum += i;
            }
            return sum;
        }
    }

    static class Average extends Sum{
        int n;

        float a(){
            super.n = n;
            float c;
            c = super.f();
            return c/n;
        }
    }

    public static void main(String[] args) {
        Average average = new Average();
        average.n = 100;
        float a = average.a();
        System.out.println("平均值为:" + a);
    }
}

输出结果为:平均值为:50.5

2、使用super调用父类的构造方法

​ 当用子类的构造方法创建一个子类的对象时,子类的构造方法总是先调用父类的某个构造方法,也就是说,如果子类的构造方法没有明显的指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。

​ **由于子类不继承父类的构造方法,因此,子类在其构造方法中需要使用super来调用父类的构造方法,而且super必须是子类构造方法中的头一条语句。**即如果在子类的构造方法中没有明显的写出super关键字来调用父类的构造方法时,则默认有super();

public class SuperTest01 {
    static class Student{
        int number;
        String name;
        //无参构造
        Student(){

        }
        //有参构造
        Student(int number,String name){
            this.number = number;
            this.name = name;
            System.out.println("我的名字是:" + name + "\n" + "我的学号是:" + number);
        }
    }

    static class UniverStudent extends Student{
        boolean married;
        UniverStudent(boolean married, int number, String name){
            super(number,name);
            this.married = married;
            System.out.println("婚否:" + married);
        }
    }

    public static void main(String[] args) {
        UniverStudent univerStudent = new UniverStudent(false, 101, "小梁");
    }
}

输出结果:

我的名字是:小梁
我的学号是:101
婚否:false

你可能感兴趣的:(Java进阶自学笔记,java)