上文只简单说了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,访问局部变量的局部内部类
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()函数略去
匿名内部类:
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()函数略去
java定义在局部的内部类、匿名内部类 (接《c++与java嵌套类比较》)
最新推荐文章于 2020-05-21 17:04:09 发布