黑马程序员技术交流社区

标题: JAVA中为什么要把一个类的构造函数protect? [打印本页]

作者: 黄昆    时间: 2012-6-10 20:05
标题: JAVA中为什么要把一个类的构造函数protect?
今天翻看Api发现有的类的构造函数被protect了,为什么要把构造函数给protect??这样有什么用呢??
作者: 孙峰    时间: 2012-6-10 20:15
protected 修饰的成员在 当前类、当前包、其他包的子类,中能访问。作为构造函数的作用 是用来创建对象。楼主结合着作用和范围理解下,也就是这样的了。
作者: 郑传庆    时间: 2012-6-10 20:20
构造函数是protected,那么该类可以继承,可以在被包内其他类中产生实例,但是无法在包外或者子类以外的地方产生实例.
作者: 赵兵锋    时间: 2012-6-10 20:58
使用了protected,客户程序(不在同一包内)就不能随便创建该类的一个实例了.但是由于是protected,使得该类可以被继承.
如果构造函数是私有的,那么该类无法被继承(因为子类构造时要调用超类的构造函数,而private使得子类无法调用),无法从外界获得一个对象.但是可以 在类的内部产生一个实例的,例如singleton就是使用private的构造函数,然后在内部维护一个实例,而提供一个static的 getInstance方法来获取这个实例
如果构造函数是protected,那么该类可以继承,可以在被包内其他类中产生实例,但是无法在包外或者子类以外的地方产生实例.
作者: 朝哥    时间: 2012-6-10 21:20
假如人类是凭证才能存在。
如果你有个省证,说明你只能在所在省生存。
如果你有个中国证,说明你只能在中国存在,你不能去国外,当然你也可以在所在省活动。
如果你有个世界证,那你就可以去其它国家了。
protected相当于这个证件。你只能在同一包里面创建实例。看下:

public         全部都可以访问
默认          类内部和同一个包或同一个目录能访问
protected  类内部,同一个包同一个目录和子类能访问                              
private      只有类内部能访问






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2