Такой класс, как LocalDate
, является неизменяемым, у него есть частный конструктор, и каждый раз, когда нам нужен его объект, мы должны вызывать его статические методы, например LocalDate.now()
или LocalDate.of(year, month, day)
. Эти методы используют ключевое слово new
и вызывают этот частный конструктор, поэтому каждый раз создается «новая ссылка». Это не одноэлементный класс, потому что мы можем иметь несколько объектов одновременно.
А как же System
класс? Он похож на LocalDate
, у него есть приватный конструктор, но нет статического метода для его вызова. Этот класс также не является абстрактным, так почему же программисты Java написали класс System
, как будто никто не может сделать из него объект? Какой шаблон проектирования стоит за этим? Какие классы действуют так?
System
? В любом случае, если вам нужно определение, вы можете назвать его служебным классом. Не более чем набор связанных методов. - person Federico klez Culloca   schedule 13.05.2020System
предназначено быть статическим пространством имен для размещения некоторых статических методов и полей, связанных с системой, но поскольку java может иметь методы только в классе, это класс только с частным конструктором, который никто не может использовать. . Он не предназначен для создания экземпляра, но он также не предназначен для наследования, а не абстрактного. Чтобы лучше смоделировать намерение такой конструкции, язык C# может объявлять статические классы, у которых нет конструктора, но в java такой вещи нет. - person Ackdari   schedule 13.05.2020System
, мне не нужно было бы каждый раз вызывать весь класс для обычной печати. - person Mohammad Kholghi   schedule 13.05.2020println
- это метод неSystem
, аPrintStream
, экземпляром которого являетсяSystem.out
. Итак, есть что-то, что было воплощено. Вам просто не нужно делать это явно :) - person Federico klez Culloca   schedule 13.05.2020