是否可以调用类构造函数并同时定义它的主体?

时间:2014-10-21 19:29:19

标签: java oop constructor initialization

在下面的代码段中,我知道在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();   
  }
}

2 个答案:

答案 0 :(得分:4)

第二个代码段显示了一个扩展Counter的匿名内部类。它没有定义构造函数。

您无法在构造函数内定义方法。此外,您无法为匿名内部类定义构造函数。

答案 1 :(得分:3)

您正在查看来自Counter的匿名类派生

派生类的主体包含在大括号内。正在调用Counter的默认构造函数(对于匿名类,您不能执行任何其他操作)。正在覆盖count()方法。

以上更常用接口执行,并为Java提供类似于闭包的东西(至少java 8)