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

4

1 回答 1

3

这个

public void Circle(int radius) {

是具有返回类型的方法声明void,而不是构造函数。

Java 语言规范指出

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

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

于 2013-10-27T20:01:28.090 回答