Java匿名类的用法

时间:2013-10-27 20:00:01

标签: java inner-classes anonymous-class

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类。

1 个答案:

答案 0 :(得分:3)

这个

public void Circle(int radius) {

是一个返回类型为void的方法声明,而不是构造函数。

The Java language specification states

  

匿名类不能有显式声明的构造函数。   相反,Java编译器必须自动提供匿名   匿名类的构造函数。

由于您从未调用上面声明的Circle(int)方法,因此永远不会打印String "I am inside"