Конструктор по умолчанию, не вызываемый при создании объекта в Java

#java #string #constructor #static #default-constructor

#java #строка #конструктор #статический #default-constructor

Вопрос:

 public class StaticFinalExample {
    static String str;

    public void StaticFinalExample() {
        System.out.println("In Constr");
        str = "H";
    }

    public static void main(String[] args) {
        StaticFinalExample t = new StaticFinalExample();
        System.out.println(str);
    }
}
  

В приведенном выше примере вывод равен null.

Почему конструктор не был вызван?

Комментарии:

1. он вызывается, но метод, который у вас есть, нет, потому что это не конструктор. удалите ключевое слово void и повторите попытку. ‘void’ — это возвращаемый тип, конструкторы его не имеют

2. @Stultuske да, вы правы. Здесь я допустил ошибку. Спасибо!

Ответ №1:

Конструкторы не имеют возвращаемого типа. В вашем методе StaticFinalExample() не должно быть void , если это ваш конструктор.

Ответ №2:

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

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