tcp
tcp

Reputation: 289

Java anonymous classes usage

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

Answers (1)

Sotirios Delimanolis
Sotirios Delimanolis

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

Related Questions