A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄昆 中级黑马   /  2012-6-12 23:33  /  2331 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

被protect的 构造函数有什么用呢?被protect 的构造函数可以用来new 对象么?


10 个回复

倒序浏览
protected修饰的对象只可以在本包内所有类和包外的子类访问。用其修饰的构造方法可以用来new对象。
回复 使用道具 举报
如果构造函数是protected,那么该类可以继承,可以在包内其他类中产生实例,但是无法在包外或者子类以外的地方产生实例.

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
被protect的构造函数的作用是必须跟它是同一个类或者同一个包的成员才能new这个类,不同包的成员不能new这个类,因为它的构造函数被保护状态。不管同不同包该类的子类都能继承这个类,但是不能继承这个类的构造方法。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
聂峰 发表于 2012-6-12 23:58
被protect的构造函数的作用是必须跟它是同一个类或者同一个包的成员才能new这个类,不同包的成员不能new这 ...

不能继承构造方法,可以得到普通的方法吧。
回复 使用道具 举报
聂峰 发表于 2012-6-12 23:58
被protect的构造函数的作用是必须跟它是同一个类或者同一个包的成员才能new这个类,不同包的成员不能new这 ...

那如果一个方法被protect了通过继承可以得到这个方法么?
回复 使用道具 举报
乐峰 中级黑马 2012-6-13 08:37:10
7#
hkylp 发表于 2012-6-13 00:05
不能继承构造方法,可以得到普通的方法吧。

可以继承普通方法的
回复 使用道具 举报
乐峰 中级黑马 2012-6-13 08:37:28
8#
hkylp 发表于 2012-6-13 00:08
那如果一个方法被protect了通过继承可以得到这个方法么?

可以得到的
回复 使用道具 举报
除了public外,可以设置构造函数的修饰符为private及protected,若设置为private,则该类不能用这个构造函数来实例化;若设置为protected,则该类只能在派生类中用该构造函数实例化。

但是可以通过使用公用方法、属性的包装,来实现实例化,单例模式即是该特性的一个使用场景。
回复 使用道具 举报
本帖最后由 wyl530274554 于 2012-6-13 10:10 编辑

protected 权限修饰符
同一包内就能访问,修饰构造方法用protected,是不让 包 外的其它类new这个对象
在同一包内是可以继承的。
回复 使用道具 举报
构造方法只要用于被其他方法调用,用来返回该类的实例,因而通常把构造方法设置成public访问权限,从而允许系统中任何位置的类来创建该类的对象。如果需要限制创建该类的对象,可以设置构造方法的访问权限,如被protect的 构造函数主要用于被其子类来调用,包外的其它类不能new对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马