Может ли конструктор быть private java

Может ли конструктор в Java быть приватным?

Может ли конструктор быть закрытым? Как полезен частный конструктор?

ОТВЕТЫ

Ответ 1

Да, конструктор может быть закрытым. Это разные способы использования. Одно из таких применений для singleton design anti-pattern, которое я бы посоветовал вам использовать. Другое, более законное использование — это делегирование конструкторов; у вас может быть один конструктор, который принимает множество различных опций, которые действительно являются деталями реализации, поэтому вы делаете их закрытыми, но затем ваши остальные конструкторы делегируют ему.

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

public class MyClass < private final String value; private final String type; public MyClass(int x)< this(Integer.toString(x), "int"); >public MyClass(boolean x) < this(Boolean.toString(x), "boolean"); >public String toString() < return value; >public String getType() < return type; >private MyClass(String value, String type) < this.value = value; this.type = type; >> 

Изменить
Глядя на этот ответ несколько лет спустя, я хотел бы отметить, что этот ответ является неполным, а также немного экстремальным. Синглтоны действительно являются анти-образными и, как правило, следует избегать, когда это возможно; однако есть много применений частных конструкторов, кроме синглтонов, и мой ответ называет только один.

Чтобы предоставить еще несколько случаев, когда используются частные конструкторы:

  • Чтобы создать неинтуитивный класс, который представляет собой просто набор связанных статических функций (это в основном одноэлементный, но если он не имеет состояния и статические функции работают строго по параметрам, а не по состоянию класса, это не как необоснованный подход, как представляется, как мой предыдущий «я», хотя использование интерфейса, который вводится зависимостями, часто упрощает поддержку API, когда для реализации требуется большее количество зависимостей или других форм контекста).
  • Когда существует несколько разных способов создания объекта, частный конструктор может упростить понимание различных способов его создания (например, более читаемый для вас new ArrayList(5) или ArrayList.createWithCapacity(5) , ArrayList.createWithContents(5) , ArrayList.createWithInitialSize(5) ). Другими словами, частный конструктор позволяет вам предоставить функцию factory, чьи имена более понятны, а затем создание закрытого конструктора гарантирует, что люди используют только более самоочевидные имена. Это также обычно используется с шаблоном построителя. Например:
MyClass myVar = MyClass .newBuilder() .setOption1(option1) .setOption2(option2) .build(); 

Ответ 2

Я ожидал, что кто-то упомянул об этом (2-й пункт), но. есть три использования частных конструкторов:

  • чтобы предотвратить создание экземпляра вне объекта, в следующих случаях:
    • одноточечно
    • factory метод
    • класс static-methods-only (utility)
    • класс констант
      .

    Ответ 3

    Да, может. Частный конструктор будет существовать, чтобы предотвратить создание экземпляра класса, или потому, что построение происходит только внутренне, например. a Factory. См. здесь для получения дополнительной информации.

    Ответ 4

    Это значит, что вы можете управлять тем, как создается экземпляр класса. Если вы сделаете конструктор закрытым, а затем создайте видимый метод конструктора, который возвращает экземпляры класса, вы можете делать такие вещи, как ограничение количества созданий (как правило, гарантируется только один экземпляр) или экземпляры рециркуляции или другие связанные с строительством задачи.

    Выполнение new x() никогда не возвращает null , но с использованием шаблона factory вы можете вернуть null или даже вернуть разные подтипы.

    Вы можете использовать его также для класса, у которого нет экземпляров или свойств экземпляра, только статические — как в классе служебных функций.

    Ответ 5

    Хорошо, если все ваши методы в классе статичны, то частный конструктор — хорошая идея.

    Ответ 6

    Частные конструкторы могут быть определены в Java по следующим причинам.

    • Чтобы иметь контроль над созданием объектов Java, он не позволит вам создать экземпляр объекта.
    • Это не разрешает подкласс класса
    • Это имеет особое преимущество при реализации singleton Pattern, для него используются частные конструкторы и имеют элемент управления созданием экземпляра для всего приложения.
    • если вы хотите, чтобы класс со всеми определенными константами и больше не нуждался в его экземпляре, мы объявляем этот класс как частный конструктор.

    Ответ 7

    Некоторые причины, по которым вам может понадобиться частный конструктор: Доступ к конструктору возможен только из статического factory метода внутри самого класса. Singleton также может принадлежать этой категории. Класс > , который содержит только статические методы.

    Ответ 8

    Частный конструктор используется для предотвращения инициализации экземпляра, такого как конечный класс Math, который вы используете в java. Singleton также использует частный конструктор

    Ответ 9

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

    Почему вы хотите, чтобы объекты вашего класса создавались только внутри? Это может быть сделано по любой причине, но одна из возможных причин заключается в том, что вы хотите реализовать синглтон. Синглтон — это шаблон дизайна, который позволяет создавать только один экземпляр вашего класса, и это можно выполнить с помощью частного конструктора.

    Ответ 10

    Да, и он используется для предотвращения создания экземпляра и последующего переопределения. Это чаще всего используется в одноэлементных классах.

    Ответ 11

    Да конструктор может быть закрытым. Частный конструктор не позволяет любому другому классу создавать экземплярный пример частного конструктора

    public class CustomHttpClient < private static HttpClient customHttpClient; /** A private Constructor prevents any other class from instantiating. */ private CustomHttpClient() < >> 

    Ответ 12

    Да. Класс может иметь частный конструктор. Даже абстрактный класс может иметь частный конструктор.

    Сделав конструктор закрытым, мы препятствуем созданию экземпляра класса, а также подклассу этого класса.

    Вот некоторые из использования частного конструктора:

    Ответ 13

    Частные конструкторы запрещают явным образом создавать экземпляры класса вызывающими см. дополнительную информацию о PrivateConstructor

    Ответ 14

    Основная идея создания частного конструктора — ограничить создание экземпляра класса извне JVM, но если класс имеет конструктор аргументов, то он указывает на то, что он намеренно создает экземпляр.

    Ответ 15

    По мне, мы можем объявить конструктор как частный, а также мы может получить экземпляр этого класса в подклассе, используя статический метод в классе, в котором мы объявляем конструктор, а затем возвращаем объект класса. мы классифицируем этот метод из подкласса используя classname.method имя bcz, это статический метод, и мы получим экземпляр класса, в котором мы объявляем const.

    Источник

    Private Constructor in Java | Use, Example

    Scientech Easy

    When a constructor is declared with a private access modifier in a class, it is called private constructor in java. It is visible within the same class where it has been declared.

    Java private constructor is useful when we want to prevent users from creating an object of class from outside. Only within the class, we can make a new object of class with private constructor.

    For example, classes such as (Math class or System class) have private constructor. They can never be instantiated from outside of the class.

    This is because all of its data fields and methods are static in nature. To prevent users from creating objects of Math class, the constructor in java.lang.Math is declared as follows:

    How to make Constructor Private

    The syntax to make a constructor private in a class is as follows:

    What happens when we make Constructor private in Java

    There are two cases happen when we make a constructor private in a class. They are as follows:

    class School < private School() < >> class Student extends School < // Error: cannot extend a class 'School'because class constructor is marked as private. >

    2. We cannot create an instance of class when we declare constructor private. If we try, compile-time error will get.

    new School(); // Error: Constructor of class 'School' is private and only accessible within the class declaration.

    Use of Private Constructor in Java

    There are mainly two important uses of private constructor in java. They are as follows:

    1. Private constructor is used when we want to prevent other classes from creating an object of a class.
    2. It can be used in single tone classes where the object of the class cannot be created outside the class.

    Example Program based on Private Constructor

    Let’s take some useful program where we declare a constructor private in a class and see what happens?

    public class Test < String name; int age; private Test(String name, int age) < this.name = name; this.age = age; >void display() < System.out.println("Name: " +name); System.out.println("Age: " +age); >public static void main(String[] args) < // Creating an object of class with private constructor within the same class. Test t = new Test("John", 35); t.display(); // Calling method. >>

    Program source code 2:

    public class Student < String name; int age; private Student(String name, int age) < this.name = name; this.age = age; >void display() < System.out.println("Name: " +name); System.out.println("Age: " +age); >> public class DisplayInfo < public static void main(String[] args) < // Creating an object of class Student with private constructor from outside class. Student st = new Student("John", 20); // Compilation error. st.display(); >>
    Output: Exception in thread "main" java.lang.Error: Unresolved compilation problem: The constructor Student(String, int) is not visible

    Program source code 3:

    public class Student < String name; int age; private Student(String name, int age) < this.name = name; this.age = age; >void display() < System.out.println("Name: " +name); System.out.println("Age: " +age); >> public class DisplayInfo extends Student < DisplayInfo()< super("John", 25); // Compilation problem. >public static void main(String[] args) < // Creating an object of class Student with private constructor from outside class. DisplayInfo dis = new DisplayInfo(); dis.display(); >>
    Output: Exception in thread "main" java.lang.Error: Unresolved compilation problem: The constructor Student(String, int) is not visible

    Frequently Asked Questions in Google Search

    1. Can a constructor be private in Java?
    2. What is the use of private constructor?
    3. How to access or class private constructor?
    4. Can we call private constructor?

    Hope that this tutorial has covered all important points related to private constructor with example programs. I hope that you will have understood this simple topic.
    Thanks for reading.
    Next ⇒ Access modifiers in Java

    Источник

    Читайте также:  Incorrect date value php
Оцените статью