Урок 9

Ключевое слово super


1. Использование ключевого слова super

Ключевое слово super используется когда подклассу требуется сослаться на его непосредственный суперкласс.

У ключевого слова super имеются две общие формы:

  1. Для вызова конструктора суперкласса:
    super(списокАргументов);​
  2. Для обращения к члену суперкласса, скрываемому членом подкласса:
    suреr.member;​

2. Вызов конструкторов суперкласса с помощью ключевого слова super

Когда метод super() вызывается из подкласса, вызывается конструктор его непосредственного суперкласса. Это справедливо даже для многоуровневой иерархии.

Вызов метода super() должен быть всегда в первом операторе, выполняемом в теле конструктора подкласса.

 Пример 1. Вызов конструкторов суперкласса с помощью ключевого слова super

public class Box6 {
    double width;
    double height;
    double depth;

    // constructor used when all dimensions specified
    Box6(double w, double h, double d) {
        width = w;
        height = h;
        depth = d;
    }

    // constructor used when no dimensions specified
    public Box6() {
        width = -1;  // use -1 to indicate
        height = -1; // an uninitialized
        depth = -1;  // box
    }

    // constructor used when cube is created
    Box6(double len) {
        width = height = depth = len;
    }

    // compute and return volume
    double volume() {
        return width * height * depth;
    }
}
public class HeavyBox1 extends Box6 {
    int weight; // вес коробки

    public HeavyBox1(int width, int height, int depth, int weight) {
        super(width, height, depth);
        this.weight = weight;
    }

    public HeavyBox1() {
        super();
        this.weight = -1;
    }
}

3.Другое применение ключевого слова super

public class C {
    public int i;
    public void print() {
        System.out.println("C.i = " + i);
    }
}

public class D extends C {
    public String i;

    public D(String a, int b) {
        i = a;
        super.i = b;
    }

    public void print(String str) {
        System.out.println(str);
        System.out.println("i = " + i);
        System.out.println("super.i = " + super.i);
    }

    public void print() {
        System.out.println("D.i = " + i);
        super.print();
    }
}


public class UseSuper1 {
    public static void main(String[] args) {
        D d = new D("someString", 2);
        d.print();
        d.print("Print:");
        System.out.println(d.i);
    }
}


0 comments
Leave your comment: