A more flexible way to do this is to have the processing done a method and to have the constructor call that. The reason for this is clearly that we can call the method from other methods, after the object has been initialized via the constructor. In other words, we can re-initialize the object. And a convenient corollary of this paradigm relates to defining fields. Immediately after declaring the field, say X, I define two methods to get and set the field.
Private methods are useful, but only in unusual circumstances.
The reason for saying this is that the philosophy is to allow others to extend existing classes, etc. By declaring a field private, one makes this harder. Of course, derived classes should use the accessor methods for fields whether the field is public, protected or private. However, there are circumstances where it is more convenient to have the object stored in the field. Programming to an Interface A key aspect of is that users can combine different objects to create new environments, tools, etc. and that they can dynamically replace one component with another that performs the same operations but with a different implementation.