黑马程序员技术交流社区

标题: 内部类的分号问题 [打印本页]

作者: 叫我小强    时间: 2014-11-20 15:55
标题: 内部类的分号问题
abstract class AbsDemo
{
abstract void show();
}
class Outer
{
int x = 3;

public void function()
{
  
  AbsDmeo d = new AbsDemo()
  {
   void show()
   {
    System.out.println("x===="+x);
   }
   void abc()
   {
    System.out.println("haha");
   }
  };//这为什么要加上一个分好啊 ???不明白
  d.show();
  
  
  
}
}
class InnerClassDemo4
{
public static void main(String[] args)
{
  new Outer().function();
}

}
求明白的人指点指点。。。。。

作者: Eagle    时间: 2014-11-22 07:20
AbsDmeo d = new AbsDemo()
  {
   void show()
   {
    System.out.println("x===="+x);
   }
   void abc()
   {
    System.out.println("haha");
   }
  };
//例如正常的创建对象语句:
Demo d  = new Demo();
既然称之为内部类,就在创建对象的内部扩展的,所以分号需要保留。
Demo d = new Demo(){方法};//只是添加了内容而已,其他的不变
而且,如果内部类中只有一个函数,可以不用定义变量名称,直接在大括号后面跟上.函数名()就可以了。
例如:
new AbsDemo()
  {
   void show()
   {
    System.out.println("x===="+x);
   }
  }.show();

其实匿名内部类就是一个匿名子类对象。可以理解为带内容的对象!!!!!!
不知道楼主是否明白?
作者: 叫我小强    时间: 2014-11-22 09:12
恩   明白了!!非常感谢!
作者: qq623324733    时间: 2014-11-27 06:42
太神奇了。。




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