Java8 основа супер ключевого слова

Я считаю, что Java язык узнал маленькие друзья знакомы с ключевыми словами супер, Далее мы рассмотрим некоторые из его основного использования этого.

Определенный класс с именем Отца

package superkeyworld;

public class Father {
    
    public String name;
    
    public int age;
    
    public Father() {}
    
    public Father(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("父类构造方法调用了!");
    }
    
    public void sayHello() {
        System.out.println("你好,我是"+name);
    }
}

супер ключевое слово может вызвать конструктор родительского класса

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

package superkeyworld;

public class Child extends Father {
    
    public Child(String name, int age) {
        // 必须位于第一行。
        super(name, age);
        System.out.println("子类构造方法执行了");
    }
}

Chlid класс конкретизации следующие результаты:

Конструктор класса родитель звонит!
Подкласс метод конструктор выполняется!

Почему у нас на первой линии?

супер () существует, это очень важная причина! Потому что отношения наследования между ребенком и родительским классом, и наследуют это значит , чтобы получить все переменные и методы родительского класса. Так как эти элементы могут получить родительский класс, который означает , что подклассы могут получить доступ к методам и переменным членам родительского класса (конечно, не означает , что вы можете получить любое использование, при условии , что их использование должны иметь соответствующие права доступа), если при использовании подкласса членов родительского класса, переменные - члены в родительский класс не инициализирован, то возникает непредвиденная ошибка, проблема возникает здесь, как обеспечить , чтобы члены родительского класса безопасны? это Мы должны обеспечить, чтобы родитель был инициализирован правильно, и правильно инициализации конструктора родительского класса неотделимы от родительского класса, то есть супер существование верно. Конструктор подкласса, если нет явного использования супер (), и первая линия не используйте эту () вызов другого подкласса конструктора, компилятор будет автоматически заполняться в первом ряду супер () для вызова конструктор по умолчанию родительского класса, родительский класс , если есть конструктор по умолчанию не выдаст ошибку.
супер () в первой строке является причиной: подкласс можно получить доступ к переменным - членам или методы родительского класса, или переменным , таким как функция - члена в родительском конструкторе класса, метод родительского класса в блоке коды и т.д. поэтому для того , чтобы обеспечить правильность подкласса может получить доступ к членам родительского класса, так что мы должны завершить инициализацию родительского класса.

супер ключевое слово может вызвать методы-члены родительского класса и переменные-члены (непатентованное)

супер ключевое слово можно использовать для доступа к элементу метода родительского класса или переменной, когда переменная член суб-класс или метод с родительского класса с тем же именем в качестве переменной-члена или метода будет охватывать родительский класс, на этот раз для того, чтобы получить доступ к членам родительского класса переменная или метод может быть доступен только супер ключевым словом, супер методы подкласса. имя методы () не требует первой строки.

package superkeyworld;

public class Child extends Father {
    
    public Child(String name, int age) {
        // 必须位于第一行。
        super(name, age);
        System.out.println("子类构造方法执行了!");
    }
    
    public void sayHello() {
        super.sayHello();
        System.out.println("父亲的年龄:"+super.age);
        System.out.println("调用父类的方法,获取了父类的属性!");
    }
}

Результаты метод SayHello Призывание подклассов следующим образом:

Здравствуйте, я Feige
возраст отца: 23
метода родительского класса вызовов, доступ к свойствам родительского класса!

рекомендация

отwww.cnblogs.com/feiqiangsheng/p/11106125.html