大家谁能讲解下内部类啊,看了书后感觉内部类用处不是很大,也许是因为现在没有接触到大的程序吧
但是想明白内部类的好处是什么 谁能举些例子讲解下
谢谢了

解决方案 »

  1.   

    你写Gui的时候就会感觉到了..           把你的lisenner 做成内部类是有多么的方便.
      

  2.   

    开发GUI程序时会用到很多内类以及匿名内部类。
      

  3.   

    package mypack;public class A { public static void main(String[] args) {
    //匿名内部类的话直接写你要重写的方法就可以了,不用再写个类
    B a = new B() {
    public void say(String name) {
    System.out.println("Hello," + name);
    }
    };
    a.say("zeng");
    }
    }
    class B{ public void say(String name) {
    System.out.println("您好," + name);
    }}
      

  4.   

    举个例子 看下面的代码:interface A
    {
    void display();
    }
    class B
    {
    public void display();
    }
    class C extends B //implements C 实现C的话,由于C继承了B的display(),又得实现A的display方法,所以..
    {
    class D implements A //如此就会出错了
    {
    public void display()
        {}
           }
    public A getD()
       {
    return new D();
    }
    }
      

  5.   

         我也刚刚学完一遍SE部分。
         感觉就GUI有点用。其他地方都不是很必须。GUI有用也就是各个监听器的地方,用了内部类可以在只写一个类的时候使得逻辑清晰很多。
         但内部类也不是什么太必须的东西。比方说GUI,可以写监听器类的时候,写一个以Frame为参数的构造函数来代替内部类。也就是怎么说呢,有些时候,只有在A类必须B类的private数据,同时A类存在的唯一目的只是为B服务时,内部类是才是不可替代的。
      

  6.   


    内部类更多的场合用在方法回调的时候。等你接触深了慢慢就回明白的,现在不好说。不知道你用过spring没有,你在实现public Object doInHibernate(Session session)这个方法的时候就回用到内部类。代码给你贴下public void addReport(final Integer planId, final Report report) {
    ht.execute(new HibernateCallback() { public Object doInHibernate(Session session)
    throws HibernateException, SQLException {
    Plan plan = (Plan) session.load(Plan.class, planId);
    plan.getReports().add(report);
    session.update(plan);
    return null;
    } }); }
    这就是一个内部类的典型实现
      

  7.   

    除了GUI,集合类里的Entry类也是个极好的内部类的例子。
      

  8.   

    可以说,一般的非public的类只做到了类的包内隐藏,而内部类则进一步做到了类的类内隐藏,甚至方法内隐藏。
      

  9.   

    在GUI中用的比较多吧,什么时候使用内部类? 当某个类只与很少的事件关联就可以用内部类实现
    jButton.addActionListener(new ActionListener() {
        public void actionPerformer(ActionEvent e) {
                //...
        }
    });
      

  10.   

    在GUI中用的比较多,只是些监听器的时候比较方便,慢慢的就知道了
      

  11.   

    找一个GUI的程序,大点的,包含有事件处理的,我觉得里面大部分用的是内部类,当然要搞懂事件处理的那三种形式后,会对你有很大的帮助!
      

  12.   

    1.可以隐藏内部实现。
    2,可以解决JAVA不可以多重继续问题。
      

  13.   

    在GUI 中用。。item.addActionListener(new ActionListener(){//匿名内部类
    public void actionPerformed(ActionEvent arg0) {
    Color c=JColorChooser.showDialog(FileChooserAndColorChooser.this,"请选择颜色",Color.BLACK);
    label.setForeground(c);
    FileChooserAndColorChooser.this.getContentPane().setBackground(c);
    }