Feature request from hiephm, posted on GitHub Aug 19, 2016
Right now there are many classes that usually be inherited but all of their members are private (for example \Magento\Payment\Model\Method\Adapter).
For child classes to use their parent members, we must re-declare constructor and all members again, which is not very convenience.
I know that OOP good practice is keeping member as much private as possible. But given the extensible nature of Magento, I think most of the private member can be safely changed to protected.