原址:http://blog.youkuaiyun.com/a450828540/article/details/9045067
上文只简单说了java中的内部类常用方式,这里再介绍下一些特殊情况:定义在局部的内部类,匿名内部类
定义在局部的内部类:
- //java,不访问局部变量的局部内部类
- class outer
- {
- int x=3;
- void method()
- {
- class inner //定义在局部的内部类
- {
- void function()
- {
- System.out.println("");
- }
- }
- new inner().function(); //若想在main()函数中,调用new outer().method()时调用function(),就要建立一个inner对象
- }
- }
- //main()函数略去
- //java,访问局部变量的局部内部类
- <pre name="code" class="cpp">class outer
- {
- int x=3;
- void method(final int a) //final 类型参数
- {
- final int y; //final 类型变量
- class inner
- {
- void function()
- {
- System.out.println(a);//此处使用局部变量y或者传递进来的参数a皆可,
- //但是,注意,必须是final类型的变量
- }
- }
- new inner().function();
- }
- }
- //main()函数略去</pre>
- <pre></pre>
- <pre></pre>
- <p></p>
- <pre></pre>
匿名内部类:
1.匿名内部类其实就是内部类的简写形式
2.定义匿名内部类必须继承一个类或实现一个接口
- //java,匿名内部类
- abstract class inner //此类也可以不是抽象的,若非抽象,下面也就不是必须重写方法
- {
- abstract void show(); //若此类方法过多,不宜使用匿名内部类,这样会造成重写每个方法,影响阅读
- }
- class outer
- {
- int x=3;
- public void function()
- {
- new inner() //匿名内部类格式:
- { // new 父类类名()
- void show() // {
- { // 方法定义
- System.out.println(""); //
- } // }.调用的方法名();
- } .show();
- }
- }
- //main()函数略去