一、基础概念  

  匿名内部类:简化书写的内部类。其实匿名内部类就是一个子类对象。

  前提:内部类需要继承或者实现外部的类或者接口。

  格式:new 父类或者接口(){定义子类的内容}

二、将内部类定义到局部的实例代码  

 /*
class Outer
{
int num = 2;
//内部类
class Inner
{
int num = 3;
void show()
{
int num = 4;
System.out.println("show ..."+num);
System.out.println("show ..."+Inner.this.num);
System.out.println("show ..."+Outer.this.num);
}
}
public void method1()
{
new Inner().show();
}
}
*/ //将上面代码的内部类定义到局部位置上。
class Outer
{
private int num = 2;
public void method1()
{
final int x=3; //内部类在局部时,只能被final修饰的局部常量,才可以被访问。
class Inner
{
void show()
{
int num = 4;
System.out.println("x="+x);
System.out.println("show ..."+num);
System.out.println("show ..."+Outer.this.num);
}
} //创建内部类对象
Inner in = new Inner();
in.show();
}
} class InnerClassDemo2
{
public static void main(String[] args)
{
new Outer().method1();
}
}

  

三、匿名内部类实例代码(一)

 abstract class Demo
{
abstract void show1();
} class OuterDemo
{
int num = 4;
/*
class Inner extends Demo
{
//复写
public void show1()
{
System.out.println("show1 ..."+num);
}
}
Inner in = new Inner();
in.show();
*/ //将上面注释的代码用匿名内部类的方式显示 public void method2()
{
//匿名内部类
new Demo()
{
public void show1()
{
System.out.println("show1 ..."+num);
}
}.show1();
}
} class InnerClassDemo2
{
public static void main(String[] args)
{
new OuterDemo().method2();
}
}

  

四、匿名内部类实例代码(二)

 abstract class Demo
{
abstract void show1();
abstract void show2();
} class OuterDemo
{
int num = 4;
/*
class Inner extends Demo
{
//复写
public void show1()
{
System.out.println("show1 ..."+num);
}
public void show2()
{
System.out.println("show2 ..."+num);
}
}
Inner in = new Inner();
in.show();
*/ //将上面注释的代码用匿名内部类的方式显示
public void method2()
{
//匿名内部类
Demo a = new Demo()
{
void show1()
{
System.out.println("show1 ..."+num);
}
void show2()
{
System.out.println("show2 ..."+num);
}
};
a.show1();
a.show2();
}
} class InnerClassDemo2
{
public static void main(String[] args)
{
new OuterDemo().method2();
}
}

  

最新文章

  1. Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计
  2. MVC架构设计——EF-Code First
  3. Python 之 【markdown 模块的学习】
  4. jQuery ajax传多个参数
  5. javascript和“主流大型语言”(c# JAVA C++等)的差异
  6. PKU 1064 Cable master
  7. SWI-Prolog
  8. 怎样使Android应用程序获得root权限
  9. Linux使用期间命令积累
  10. 微信小程序下拉刷新和上拉加载
  11. mysql优化sql语句的方法
  12. golang包管理解决之道——go modules初探
  13. 自动化测试基础-断言(Assert)使用方法
  14. Notepad++ tab替换为4个空格
  15. Mybatis 的配置xml和properties放在jar包以外的一种方法
  16. 使用VSCode调试单个PHP文件
  17. [vt][xen]xenserver初始安装增加第二块硬盘&xen图形界面安装vm&设置xen里vm开机启动
  18. on SDN
  19. Log4j输出格式控制
  20. sed.md

热门文章

  1. LibEvent代码阅读--多缓冲区和零拷贝技术
  2. c# 通过dllimport 调用c 动态链接库
  3. Variable hoisting Function hoisting
  4. c++多线程编程(一)
  5. opennebula 安装指定参数
  6. Java EE的十三个规范
  7. Marvel
  8. RocketMq2
  9. 数据预处理 center&scale&box-cox
  10. laravel与front-end