Вы не можете создать экземпляр Parent
вне этого класса, но:
- Вы все еще можете создавать классы, производные от
Parent
, если они вложенные классы внутри Parent, и они могут иметь не приватные составы. Код (включая чаще всего статические методы) внутри типа Parent
может создавать экземпляры Parent
поэтому у вас может быть статический метод фабрики, но вы не можете напрямую предоставлять конструкторы.Например:
public class Parent
{
private Parent {}
public static Parent CreateParent()
{
return new Parent();
}
}
Иногда такой подход может оказаться полезным, если вы хотите применить проверку аргументов (и т. Д.) до создания экземпляратипа, и поэтому вы хотите заставить все через именованные фабричные методы.Это также может облегчить чтение кода, особенно если вы хотите иметь разные способы создания экземпляра из одного и того же числа значений.TimeSpan.FromSeconds
, TimeSpan.FromMinutes
и т. Д. Являются хорошими примерами этого.