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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尹善波 中级黑马   /  2012-7-9 22:34  /  1787 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    import java.util.*;   
  public class MyUtil extends ArrayList
  {   
    public static void main(String[] args)
   {   
     MyUtil m = new MyUtil();   
       m.add("w");
   m.add("x");
   m.add("y");
   m.add("z");   
     m.removeRange(1,3);   
     System.out.print(m.size() + " ");   
         MyUtil m2 = new MyUtil2().go();   
       System.out.println(m2.size());   
  }   
  }   
class MyUtil2
{   
        MyUtil go()
   {   
        MyUtil m2 = new MyUtil();   
         m2.add("1");
   m2.add("2");
   m2.add("3");   
        m2.removeRange(1,2);   
           return m2;   
      }
}  
为什么会编译时出现removeRange是protected方法,请高手解释一下

4 个回复

倒序浏览
查看一下API
protected void removeRange(int fromIndex,int toIndex)
removeRange是受保护的方法
回复 使用道具 举报

RE: 弄不明白

追问

但是在MyUtil2中调用这个方法的还是MyUtil的对象呀。
MyUtil m2 = new MyUtil(); .......; m2.removeRange(1,2); 这跟在MyUtil自己的main方法中调用不是一样的吗?
回复 使用道具 举报
首先肯定不行:
因为removeRange是继承了父类ArrayList的方法,这个方法的权限修饰符是protected,这个修饰符的访问权限是:在同一个包下,其他类或者子类,
你创建的MyUtil 这个类没有在util包下创建,如果你想用的这个removeRange方法的话,要把它放在同一个包下,或者就在util包下创建,或者你可以把源码的修饰符改为public,这样你也可以用了,不过这些都是浪费时间的,你干嘛一定要用这个方法呢,可以用Remove啊

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
ArrayList:底层的数据结构使用的是数组结构。 特点:查询速度很快,但是增删稍慢。线程不同步

希望采纳 楼主你的程序不安全!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马