2016-09-29 2 views
0

Я перехожу из PHP в Java, это очень сложно понять ООП, поскольку английский не является моим основным языком. Я хочу простой ответ (насколько это возможно, LOL). В чем разница между:В чем разница между пустым конструктором и конструктором

class Munikas { 

    public Munikas(){ 
    } 

    public void rytas(){ 
     System.out.println("Labas Rytas"); 
    } 

    public static void main(String[] args){ 
     Munikas labas = new Munikas(); 
     labas.rytas(); 
    } 
} 

И

class Munikas { 
    public void rytas(){ 
     System.out.println("Labas rytas"); 
    } 

    public static void main(String[] args){ 
     Munikas labas = new Munikas(); 
     labas.rytas(); 
    } 
} 

На секунду я не использую constructor. Как это повлияет на мой код в будущем?

ответ

9

Нет никакой разницы между фрагментами кода, который вы предоставили. Построенный пользователем конструктор no-arg по существу тот же, что и конструктор no-arg по умолчанию, который по умолчанию поставляется Java.

Если вы сделали что-нибудь внутри этого конструктора no-arg, то тогда было бы различие, но, как автор, эти два примера кода эквивалентны.

Java Language Specification предоставляет больше контекста этому, с образцом кода, аналогичным вашему собственному.

+0

Так что мне нужно построить конструктор самостоятельно только тогда, когда мне нужно использовать в нем аргументы? –

+0

@TomasVilemaitis: Обычно это вариант использования для конструкторов, хотя вы можете использовать конструктор, чтобы установить какое-то состояние по умолчанию, если вы действительно этого хотели. – Makoto

+0

@TomasVilemaitis No. Только когда вы что-то делаете в конструкторе. Может существовать конструктор без аргументов, который устанавливает некоторые поля. –

5

Нет никакой разницы. Когда ваш класс не определяет какой-либо конструктор (как во втором фрагменте), компилятор автоматически вставляет конструктор без параметров с пустым телом, поэтому второй фрагмент эквивалентен первому.

1

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

1

классы в java имеют конструктор по умолчанию, который создается за кулисами. В первом вы добавили конструктор. второй, java-компилятор создаст пустой конструктор по умолчанию.

подробнее здесь: https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

надеюсь, что это помогает :)

-1

Проще говоря, конструктор позволяет создать экземпляр объекта вашего класса, используя что-то вроде этого:

Munikas testObject = new Munikas(); 

Разница между ними будет очевидна, если вы попытаетесь использовать методы NON-STATIC. Метод Ритас() не является статичным, что означает, что вам нужно вызвать его с помощью экземпляра объекта класса, например, так:

testObject.rytas(); 

Так при использовании Ритас, вам нужно будет использовать конструктор. Как отмечали другие люди, вам не нужно добавлять код для создания пустого конструктора, однако иногда вам нужно будет использовать конструкторы для объектов с параметрами. Основной метод STATIC будет хорош с конструктором или без него и может быть вызван с использованием только самого класса (Munikas). Для получения дополнительной информации, проверьте this. Надеюсь, это поможет.

0

Java Конструкторы специальные методы, которые вызываются, когда объект конкретизируется с помощью new ключевого слова как:

ClassName referenceName = new ClassName();

Конструктор по умолчанию:

public ClassName(){ // no statements }

Конструктор в классе не должен. Если вы не определяете конструктор в классе, то JVM добавляет по умолчанию.

В первом коде:

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

Во втором коде:

JVM автоматически определяет конструктор по умолчанию такой же, как в первом коде. Таким образом, не будет никакого эффекта от добавления конструктора.

Смежные вопросы