Я считаю, что 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
метода родительского класса вызовов, доступ к свойствам родительского класса!