在下面的代码段中,我知道在Counter c = new Counter();
语句中,
声明了一个新的引用变量,并且new运算符在其中放置了一个内存位置,同时正在调用类构造函数,但我不理解其余部分!
实际上是否可以在调用时使用{ }
定义构造函数体!
是否可以在构造函数中定义方法?
public class Counter {
private int counter = 0;
public int count() {
return counter++;
}
}
然后在另一个课程中我们有:
Counter c = new Counter() {
public int count() {
super.count();
return super.count();
}
}
答案 0 :(得分:4)
第二个代码段显示了一个扩展Counter的匿名内部类。它没有定义构造函数。
您无法在构造函数内定义方法。此外,您无法为匿名内部类定义构造函数。
答案 1 :(得分:3)
您正在查看来自Counter
的匿名类派生。
派生类的主体包含在大括号内。正在调用Counter
的默认构造函数(对于匿名类,您不能执行任何其他操作)。正在覆盖count()
方法。
以上更常用接口执行,并为Java提供类似于闭包的东西(至少java 8)