Reputation: 289
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;
}
}
I have created anonymous inner class of Circle inside getcircle method.But invoking getcircle method is not displaying "I am inside".Why is it so?? Anonymous class should override the outer Circle class.
Upvotes: 0
Views: 430
Reputation: 280167
This
public void Circle(int radius) {
is a method declaration with a return type void
, not a constructor.
The Java language specification states
An anonymous class cannot have an explicitly declared constructor. Instead, a Java compiler must automatically provide an anonymous constructor for the anonymous class.
Since you never call the Circle(int)
method declared above, the String
"I am inside"
is never printed.
Upvotes: 3