Throughout this article, I will use Java's Object-Oriented Programming terminologies such as static, private and public.
This pattern exploits scoping to allow for private and public fields and methods. It is named as Self-construction because the class function (or constructor) has to assign instance methods one by one.