Я просто использовал конструктор генерации Eclipse с использованием функции полей, и он предоставил мне следующую конструкцию:
public Credentials(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
Класс Credentials
явно не расширяет другой класс, поэтому я думаю, он расширяет Object
. Для чего нужен звонок super();
?
4 ответа
Если бы вы определили свой конструктор как:
public Credentials(String userName, String password) {
this.userName = userName;
this.password = password;
}
Тогда компилятор все равно добавит неявный вызов конструктора суперкласса, так что это не повлияет на ANY скомпилированный код.
Класс Credentials явно не расширяет другой класс, поэтому я думаю, он расширяет Object. Что такое super (); звонок хорош для?
Но ваш класс неявно расширяет Object
, поэтому будет выполнен вызов Object()
.
Ключевое слово super
- это ссылка на "включающий" экземпляр текущего суперкласса.
Вы можете использовать его для доступа к методам или полям суперкласса (если они видимы). Если у вашего класса нет суперкласса (указанного как class Credentials extends SuperclassName
), суперклассом будет автоматически Object
.
super()
при вызове метода вызывает конструктор суперкласса (тот, у которого нет аргументов). Вы можете вызывать только конструктор (ы) собственного класса, а не какой-либо другой метод.
Примере:
class A {
private String m_name;
public A(String name){
m_name = name;
}
}
class B extends A {
public B(String firstName, String lastName){
//this calls the constructor of A
super(firstName + " " + lastName);
}
}
Super () вызывает родительский конструктор без аргументов.
Чтобы использовать if для аргументов, например super (ваш аргумент), он вызовет конструктор, который принимает один параметр типа аргумента (если существует).
Также его можно использовать для вызова методов из родителя. Т.е. super.yourMethod ()
super()
вызывает конструктор родительского класса, если вы не добавите эту строку, по умолчанию будет вызываться конструктор без аргументов.
Если родительский класс не имеет конструктора без аргументов, и вы не будете вызывать другой конструктор, ваш код не будет компилироваться
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
Object
.