参考链接:https://blog.csdn.net/lyyslsw/article/details/8630502
使用protected 构造方法,是包保护措施,出了这个包,在别的包里面是不可以new这个对象的。
假设class A 的构造函数是protected的,如果在别的包里还想用我这个类的功能,只能是用该类的子类了:创建一个子类B extends A,子类会继承方法。 这里可以使用匿名类:new A(){}.func1();
但是为什么这样就可以调用protected类型的构造函数来new 对象呢?
这是因为在new子类对象的时候,调用子类对象的构造方法时会先调用父类的构造方法,子类的构造方法是在子类的类体里面,而在子类的类体里面,对父类的protected变量和方法是可见的。