黑马程序员技术交流社区

标题: java代码:new 类名(){方法定义}应该如何理解? [打印本页]

作者: ~﹏~    时间: 2013-11-1 15:41
标题: java代码:new 类名(){方法定义}应该如何理解?
  1. class test {                                           //class开始
  2.          jPanel2 = new JPanel (){
  3.                protected void paintComponent(Graphics g){
  4.                //代码
  5.                }
  6.           };
  7. componet.addMouseListener(new MouseAdapter() {
  8.     public void mouseReleased(MouseEvent me) {
  9.            // 这里写你想做的事情
  10.      }
  11.     });
复制代码

作者: ∏艾力克斯※    时间: 2013-11-1 15:46
这个好像叫类重写?也是我很模糊的一个概念,希望高手来解答一下。和LZ一起等
作者: 魏-玉-彪    时间: 2013-11-1 16:04
本帖最后由 魏-玉-彪 于 2013-11-1 16:14 编辑
  1. class test {                                          
  2.         jPanel2 = new JPanel (){  //这里是声明并创建 Jpanel 匿名类对象
  3.                protected void paintComponent(Graphics g){
  4.                //代码
  5.                }
  6.           };// 注意这里的分号不能省略


  7. componet.addMouseListener(new MouseAdapter()) {  //这里的意思是 componet对象调用鼠标监听器方法
  8.                                 //而调用这个方法需要一个参数(小括号内)M (鼠标适配器对象)
  9.                                 //而为了简写就直接创建了没有名字的匿名对象,就是
  10.                                 //new MouseAdapter() 这时是指创建匿名类对象
  11.     public void mouseReleased(MouseEvent me) {
  12.            // 这里写你想做的事情
  13.      }
  14.     }

  15. 上面的代码等价于

  16. MouseAdapter m= new MouseAdapter();

  17. componet.addMouseListener(m) {   
  18.     public void mouseReleased(MouseEvent me) {
  19.            // 这里写你想做的事情
  20.      }
  21.     }

  22. }
复制代码
建议你再复习一下面向对象的思想概念
作者: ciowok    时间: 2013-11-1 18:59
匿名内部类
作者: 零下五度的水    时间: 2013-11-1 19:42
{ } 相当于为那个类写一个子类,如果是接口就是为这个接口写一个实现
然后 new 这个子类/实现对象
作者: 王雷1    时间: 2013-11-1 20:03
这是一个匿名的 内部类。    一般匿名的内部类都会实现一个借口或者继承一个父类。  当我们new 的时候 直接new其借口或者父类 即可。
这里我们假设MouseAdapter是一个借口 那么
下面的方法“mouseReleased()”   是其借口的抽象方法。 所以我们必须实现它
作者: hel    时间: 2013-11-1 21:58
匿名内部类也就是没有名字的内部类

正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写

但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2