从头认识java-8.6 匿名内部类

来源:互联网 发布:青少年计算机编程 编辑:程序博客网 时间:2024/06/13 07:04

这一章节我们来讨论一下匿名内部类。

我们之前已经提到了内部类,如下:

package com.ray.ch03;public class Test {private class OneTest implements MyTest {@Overridepublic void test() {}}private MyTest myTest() {return new OneTest();}public static void main(String[] args) {new Test().myTest();}}interface MyTest {void test();}


上面的内部类看上去没什么问题,但是很多时候我只需要它来辅助,其他地方基本用不上,因此,我们可以简化一下,变成匿名内部类,只是用来辅助方法的。

注意:匿名内部类的实现需要接口或者抽象类来配合

我们将上面的代码修改一下,变成下面的例子:

package com.ray.ch03;public class Test {private MyTest myTest() {return new MyTest() {@Overridepublic void test() {}};}public static void main(String[] args) {new Test().myTest();}}interface MyTest {void test();}

笔者总结了几个注意点:

1.只能在继承或者实现接口里面选一个,不可两者兼备

2.不能够定义构造函数

3.不能使用static

4.不能是抽象的


package com.ray.ch03;public class Test {private MyTest myTest() {// 不能继承MyTest2,只能是在返回类型是MyTest2的时候才能。return new MyTest() {// public MyTest(){}//error// private static int id=1;//error@Overridepublic void test() {}};}public static void main(String[] args) {new Test().myTest();}}interface MyTest {void test();}class MyTest2 {}


总结:这一章节我们简单讲述了一下匿名内部类。


这一章节就到这里,谢谢。

-----------------------------------

目录



0 0
原创粉丝点击