JAVA中的嵌套调用

来源:互联网 发布:刺客信条4黑旗优化补丁 编辑:程序博客网 时间:2024/05/16 05:51

今天发现有写成这样的代码,我简单表示如下


/**  * 嵌套调用演示例子  * @author zhouwei  */ public class T2 extends T{@Overrideprotected void test() {System.out.println("in T2 class");}    public static void main(String[] args) {T  t = new T2();t.calc();}}abstract class T{static int flag=0;void calc(){System.out.println("in T class");test();
T t = new T2();
t.calc();
}
protected abstract void test();}


这实际构成了一个死循环,实际代码比这个要复杂.T2 调用calc,calc生成T2对象,T2对象又调用calc


需要修改下,修正死循环


/**  * 嵌套调用演示例子  * @author zhouwei  */ public class T2 extends T{@Overrideprotected void test() {System.out.println("in T2 class");}    public static void main(String[] args) {T  t = new T2();t.calc();}}abstract class T{static int flag=0;void calc(){System.out.println("in T class");test();if(flag ==0 ){flag =1;T t = new T2();t.calc();}}protected abstract void test();}