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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 叫我小强 中级黑马   /  2014-11-20 15:55  /  1366 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();
}

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

4 个回复

倒序浏览
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();

其实匿名内部类就是一个匿名子类对象。可以理解为带内容的对象!!!!!!
不知道楼主是否明白?
回复 使用道具 举报
恩   明白了!!非常感谢!
回复 使用道具 举报
学习了。学习了
回复 使用道具 举报
太神奇了。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马