2013-02-26 4 views
1

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

public class Validator { 
    public Validator() { 
    } 

    public String getString(Scanner sc, String prompt) { 
     System.out.print(prompt); 
     String s = sc.next(); // read user entry 
     sc.nextLine(); // discard any other data entered on the line 
     return s; 
    } 

    public int getInt(Scanner sc, String prompt) { 
     int i = 0; 
     boolean isValid = false; 
     while (isValid == false) { 
      System.out.print(prompt); 
      if (sc.hasNextInt()) { 
       i = sc.nextInt(); 
       isValid = true; 
      } else { 
       System.out.println("Error! Invalid integer value. Try again."); 
      } 
      sc.nextLine(); // discard any other data entered on the line 
     } 
     return i; 
    } 

    public int getInt(Scanner sc, String prompt, int min, int max) { 
     int i = 0; 
     boolean isValid = false; 
     while (isValid == false) { 
      i = getInt(sc, prompt); 
      if (i <= min) 
       System.out.println("Error! Number must be greater than " + min 
         + "."); 
      else if (i >= max) 
       System.out.println("Error! Number must be less than " + max 
         + "."); 
      else 
       isValid = true; 
     } 
     return i; 
    } 

    public double getDouble(Scanner sc, String prompt) { 
     double d = 0; 
     boolean isValid = false; 
     while (isValid == false) { 
      System.out.print(prompt); 
      if (sc.hasNextDouble()) { 
       d = sc.nextDouble(); 
       isValid = true; 
      } else { 
       System.out.println("Error! Invalid decimal value. Try again."); 
      } 
      sc.nextLine(); // discard any other data entered on the line 
     } 
     return d; 
    } 

    public double getDouble(Scanner sc, String prompt, double min, double max) { 
     double d = 0; 
     boolean isValid = false; 
     while (isValid == false) { 
      d = getDouble(sc, prompt); 
      if (d <= min) 
       System.out.println("Error! Number must be greater than " + min 
         + "."); 
      else if (d >= max) 
       System.out.println("Error! Number must be less than " + max 
         + "."); 
      else 
       isValid = true; 
     } 
     return d; 
    } 
} 
+2

Как весь код после конструктора относится к вашему вопросу? – Dan

+0

Если вам нечего делать в вашем конструкторе, вам не нужно объявлять его. –

+0

Кто-то, кого я знаю, недавно изучал программирование. В его учебном материале говорилось: «Всегда создавайте геттеры и сеттеры», но он никогда не останавливался, чтобы спросить, зачем он им нужен. Теперь он разоблачает частные переменные и скрывает публику. Когда вы проектируете объекты, постарайтесь использовать «Объектно-ориентированную философию» больше, чем общие правила конкретных частей. Должна ли собака знать, что звук делает кошка? Может быть, так, но нужно ли знать внутреннее состояние голода кошки? Возможно нет. Конструкторы будут следовать аналогичным точкам –

ответ

7

Конструктор используется для «сборки» объекта. Если у вас нет значений, которые вам нужно установить, то нет необходимости в конструкторе. Вы также можете подумать о создании своего класса static. Static означает, что вам не нужно создавать экземпляр для доступа к его методам. Это часто полезно, когда экземпляр класса не содержит никаких конкретных значений, как ваш!

+0

, каков будет конструктор по умолчанию java для моего кода выше? – babaysteps

+0

Конструктор Java по умолчанию создан для вас JVM. Вам не нужно ничего писать :) – christopher

3

Если нет переменного экземпляра и никаких других необходимых задач для инициализации объекта вашего класса, вы можете выйти из конструктор. Компилятор Java предоставит вам по умолчанию. Обычно я включаю только явный конструктор, когда я точно знаю, что мне нужно.

2

Вам не нужно явно определять конструктор. Уже существует конструктор по умолчанию. И совсем не плохая практика программирования, чтобы использовать этот конструктор.

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