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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 491138002 中级黑马   /  2014-3-31 10:34  /  1143 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package packb;
  2. public class  DemoB
  3. {
  4.         protected void method(){
  5.                 System.out.println("DemoB method run");
  6.        
  7.         }
  8. }
  9. package packa;
  10. public class DemoA extends packb.DemoB
  11. {
  12.         public void show(){
  13.                 System.out.println("DemoA show run");
  14.                
  15.         }
  16. }
  17. package pack;

  18. class PackageDemo
  19. {
  20.         public static void main(String[] args)
  21.         {
  22.                 packa.DemoA d = new packa.DemoA();
  23.                 d.show();
  24.                 d.method();
  25.         }
  26. }
复制代码
为什么对象d不能访问method方法呢?

QQ截图20140331103326.png (4.68 KB, 下载次数: 15)

运行结果

运行结果

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

3 个回复

倒序浏览
一. protected 访问控制符能被用于方法和成员变量。
二. 声明为protected的方法和成员变量能被同一个包里的所有类所访问,就像默认修饰符package一样。
三. 能被该类的子类所访问,子类可以和父类不在一个包中。
    这样,当你想让一个类中的某个方法或成员变量在包中都可见,而且其子类也能访问(子类有可能和父类不在同一个包中)但又不想让所有类都可以访问该类时,就可以用protected修饰符。
子类和父类可以不在一个包中,但是必须要在子类内部调用父类的protected方法:
  1. public class DemoA extends packb.DemoB
  2. {
  3.        
  4.         public void show(){
  5.                 System.out.println("DemoA show run");
  6.                
  7.                 new DemoA().method();
  8.         }
  9. }
复制代码

比如上面代码,在子类A中就可以调用父类的method方法了。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 黄晓鑫 于 2014-3-31 11:04 编辑

不同包中要加包名访问 类名.包名.类名.方法
回复 使用道具 举报
protected

只能在其子类中调用此修饰符修饰的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马