黑马程序员技术交流社区

标题: 关于构造函数的修饰符的问题 [打印本页]

作者: 黄昆    时间: 2012-6-12 23:33
标题: 关于构造函数的修饰符的问题
被protect的 构造函数有什么用呢?被protect 的构造函数可以用来new 对象么?



作者: 赵兵锋    时间: 2012-6-12 23:45
protected修饰的对象只可以在本包内所有类和包外的子类访问。用其修饰的构造方法可以用来new对象。
作者: 黑马张扬    时间: 2012-6-12 23:50
如果构造函数是protected,那么该类可以继承,可以在包内其他类中产生实例,但是无法在包外或者子类以外的地方产生实例.
作者: 乐峰    时间: 2012-6-12 23:58
被protect的构造函数的作用是必须跟它是同一个类或者同一个包的成员才能new这个类,不同包的成员不能new这个类,因为它的构造函数被保护状态。不管同不同包该类的子类都能继承这个类,但是不能继承这个类的构造方法。
作者: 黄昆    时间: 2012-6-13 00:05
聂峰 发表于 2012-6-12 23:58
被protect的构造函数的作用是必须跟它是同一个类或者同一个包的成员才能new这个类,不同包的成员不能new这 ...

不能继承构造方法,可以得到普通的方法吧。
作者: 黄昆    时间: 2012-6-13 00:08
聂峰 发表于 2012-6-12 23:58
被protect的构造函数的作用是必须跟它是同一个类或者同一个包的成员才能new这个类,不同包的成员不能new这 ...

那如果一个方法被protect了通过继承可以得到这个方法么?
作者: 乐峰    时间: 2012-6-13 08:37
hkylp 发表于 2012-6-13 00:05
不能继承构造方法,可以得到普通的方法吧。

可以继承普通方法的
作者: 乐峰    时间: 2012-6-13 08:37
hkylp 发表于 2012-6-13 00:08
那如果一个方法被protect了通过继承可以得到这个方法么?

可以得到的
作者: 山水游客    时间: 2012-6-13 09:24
除了public外,可以设置构造函数的修饰符为private及protected,若设置为private,则该类不能用这个构造函数来实例化;若设置为protected,则该类只能在派生类中用该构造函数实例化。

但是可以通过使用公用方法、属性的包装,来实现实例化,单例模式即是该特性的一个使用场景。

作者: 黑马-王言龙    时间: 2012-6-13 10:09
本帖最后由 wyl530274554 于 2012-6-13 10:10 编辑

protected 权限修饰符
同一包内就能访问,修饰构造方法用protected,是不让 包 外的其它类new这个对象
在同一包内是可以继承的。
作者: 郑冬    时间: 2012-6-13 10:23
构造方法只要用于被其他方法调用,用来返回该类的实例,因而通常把构造方法设置成public访问权限,从而允许系统中任何位置的类来创建该类的对象。如果需要限制创建该类的对象,可以设置构造方法的访问权限,如被protect的 构造函数主要用于被其子类来调用,包外的其它类不能new对象





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