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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘云龙 中级黑马   /  2013-3-10 09:57  /  5163 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

protected能不能修饰类

12 个回复

倒序浏览
能把你的问题说详细一点吗
回复 使用道具 举报
本帖最后由 朱荣宁. 于 2013-3-10 10:41 编辑

我来回答你,希望对你有用.
protected可以修饰成员变量和方法,被称为受保护的成员变量和方法,
而且
必须在同一包中才能被访问。它不能修饰类

protected 标识符主要作用是使类或接口的成员仅在该类或接口以及当前类的所有派生类中可见。
当前类之外的代码无法访问 protected 成员。全局范围内的类和接口不能使用 protected 修饰符来标记。
类或接口(包括嵌套类和嵌套接口)的任何成员都可以使用 protected 修饰符来标记。
不能将 protected 修饰符与其他任何可见性修饰符(public、private 或 internal)组合。
我在这里给你举出一个很简单的例子:
代码如下:
  • class A

      {
  • protected int weight ;
  • protected int f( int a,int     b )
  • {
  • // 方法体
  • }
  • }

假设B与A在同一个包中,则
  • class B
  • {
  • void g()
  • {
  • A a=new A();
  • A.weight=100;//合法
  • A.f(3,4); //合法
  • }
  • }
你可能会问到什么是在同一个包中?
就是用package打包在一起的class ,叫在同一个包中
没有使用package打包的,在同一目录下的类也会被视做同一个包。
所以不能用protected和private修饰类。希望对你用用!


评分

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

查看全部评分

回复 使用道具 举报
外部类只能用public,abstract,final修饰

内部类可以用protected修饰
回复 使用道具 举报
能问的清楚一点吗???
回复 使用道具 举报
protected不能修饰类

类主要作用:供其他类调用或被继承,这里就有同包和异包两种情况了;
同包:默认的权限就可以相互调用了,无需用到protected
异包:那个类是public的,不然就已经没有机会访问了,更别提继承了
所以用protected是多余的。而java认为他是多余的编译都无法通过了。

评分

参与人数 1技术分 +1 黑马币 +9 收起 理由
黄玉昆 + 1 + 9 赞一个!

查看全部评分

回复 使用道具 举报
谢洋 高级黑马 2013-3-10 10:58:39
7#
除了内部类在外部类的成员位置上可以
回复 使用道具 举报
java类只能是public或者默认的
外部类只能使用了public修饰或者是默认。只要此类没有用final修饰都可以被其它类继承。如果可以用protected修饰那不是重复了吗。如果是内部类那就可以使用protected修饰了  ,  被protected  修饰的类成员可以被这个类自己,类的子类(可以在不同包下)和同一个包的其他类访问其他范围的类不允许类成员。

评分

参与人数 1黑马币 +9 收起 理由
黄玉昆 + 9 赞一个!

查看全部评分

回复 使用道具 举报
外部类能用public,abstract,final修饰,内部类处于外部类成员位置时可以用protected修饰
回复 使用道具 举报
小路飞 来自手机 中级黑马 2013-3-10 12:01:42
10#
本帖最后由 侯国奇 于 2013-3-10 12:03 编辑
朱荣宁. 发表于 2013-3-10 10:21
我来回答你,希望对你有用.
protected可以修饰成员变量和方法,被称为受保护的成员变量和方法,
而且必须在同 ...


学有所悟,说得挺详细的,再加上内部类的说明就好了
回复 使用道具 举报
沈文杰 发表于 2013-3-10 10:41
protected不能修饰类

类主要作用:供其他类调用或被继承,这里就有同包和异包两种情况了;

昆哥辛苦啦,;P
回复 使用道具 举报
当然不能了
回复 使用道具 举报

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马