d-stream, нужно без наследования, так-как ситуация как минимум не позволяет использовать конструкторы и скорее всего наследование полностью работать нормально не будет. И повторюсь, метод не работает без наследования.
Тимур Покровский, Их применение, позволяет открыть доступ к классу, только определённым классам. При этом все остальные классы всё так-же не будут иметь доступ к этому классу. Тем-более встречаются ситуации, где они лучший выбор.