这一章节我们来讨论一下匿名内部类。
我们之前已经提到了内部类,如下:
package com.ray.ch03;
public class Test {
private class OneTest implements MyTest {
@Override
public 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() {
@Override
public 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
@Override
public void test() {
}
};
}
public static void main(String[] args) {
new Test().myTest();
}
}
interface MyTest {
void test();
}
class MyTest2 {
}
总结:这一章节我们简单讲述了一下匿名内部类。
这一章节就到这里,谢谢。
-----------------------------------