A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sprinter 中级黑马   /  2015-3-1 10:32  /  1130 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 sprinter 于 2015-3-1 10:36 编辑

关于构造方法的递归问题。
  1. <code><font size="2">public class MyClass {
  2.     public static void main(String[] args) {
  3.         new MyClass(0);
  4.     }

  5.     public MyClass(int num) {
  6.         if ((num++) < 5) {
  7.             System.out.print(num);
  8.             new MyClass(num);//用new关键字就不是递归了
  9.             // MyClass(num);
  10.             // 错误:没有为类型 MyClass 定义方法 MyClass(int)
  11.         }
  12.     }

  13.     /*
  14.      * private void MyClass(int num) {
  15.      * //普通方法可以和构造方法同名
  16.      * //提示:此方法具有构造函数名
  17.      * //建议:更改为构造函数
  18.      *  }
  19.      */

  20.     class a {
  21.         public a() {
  22.         // this();//错误:递归性构造函数调用 MyClass.a()
  23.         //this(2);//错误:递归性构造函数调用 MyClass.a(int)
  24.         }

  25.         public a(int a) {
  26.             this();
  27.         }
  28.     }
  29. }
  30. </font></code>
复制代码

结论:
  • 构造方法不能递归,就类似于static不能修饰局部变量一样。
  • 在java中有一种错误叫Recursive constructor invocation,即递归性构造函数调用。

评分

参与人数 2黑马币 +60 收起 理由
zhou1234 + 20 淡定
caoyang521 + 40 很给力!

查看全部评分

1 个回复

倒序浏览
不错不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马