使用protected 构造方法,是包保护措施,出了这个包,在别的包里面是不可以new这个对象的。 假设class A 的构造函数是protected的
如果在别的包里还想用我这个类的功能,只能是用该类的子类了,创建一个子类B extends A,子类会继承方法。 这里可以使用匿名类。
new A(){}.func1();
但是在此处,调用的方法为public的,如果不是,就不可见了。
但是为什么A的构造函数也是protected,但是可以new呢?
这是因为在new子类对象的时候,在调用子类对象的构造方法时候会先调用父类的构造方法。
子类的构造方法是在类体里面的。在子类的类体里面,对父类的protected变量和方法是可见的。