package wrap;
public class Anonymous {
public Circle getCircle(int radius){
return new Circle(radius){
private int rad;
public double area() {
return 3.14*rad*rad;
}
};
}
public static void main(String[] args) {
Anonymous p = new Anonymous();
Circle w = p.getCircle(10);
System.out.println(w.area());
}
}
class Circle {
private int rad;
public Circle(int radius) {
rad = radius;
}
public double area() {
return rad*rad;
}
}
我在getcircle方法中创建了一个匿名的Circle类内部。但是调用getcircle方法并没有显示“我在里面”。为什么会这样?匿名类应该覆盖外部Circle类。
答案 0 :(得分:3)
这个
public void Circle(int radius) {
是一个返回类型为void
的方法声明,而不是构造函数。
The Java language specification states
匿名类不能有显式声明的构造函数。 相反,Java编译器必须自动提供匿名 匿名类的构造函数。
由于您从未调用上面声明的Circle(int)
方法,因此永远不会打印String
"I am inside"
。