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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ifuzhen 中级黑马   /  2014-4-24 16:32  /  2616 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ifuzhen 于 2014-4-24 23:04 编辑

构造函数可以递归调用么?能不能举例说明下?

4 个回复

正序浏览
class Person {
private String name;
private int age;
Person(){ }    //无参构造
Person(String name){
  this();           //调用无参构造
  this.name = name;
}
Person(int age){
  this(name);   //调用一个参数的构造
  this.age = age;
}
回复 使用道具 举报
thank you ...
回复 使用道具 举报
可以使用递归调用,但是不推荐用递归对象自己  太容易照成内存爆掉
一个简单例子 递归构造方法和递归方法没什么本质上的区别
class Child {
        public Child(int i){
                System.out.println("Child 构造方法");
                if(i>3) return;
                new Child(++i);
        }}

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
  1. 1 class JavanTiger {
  2. 2     int age;      // 年龄
  3. 3     int hight;    // 身体高度
  4. 4
  5. 5     public JavanTiger() {
  6. 6         print();
  7. 7         this.age=2;   //这里初始化 age 的值 ,但递归返回的时候,这个值会被覆写
  8. 8     }
  9. 9     
  10. 10     public JavanTiger(int age) {
  11. 11         this();      // 调用自己的第一个构造函数,下面的两个语句数不执行的
  12. 12         this.age = age;
  13. 13         print();
  14. 14     }
  15. 15
  16. 16     public JavanTiger(int age, int hight) {
  17. 17         this(age);   // 调用自己第二个构造函数  ,下面的两个语句数不执行的
  18. 18         this.hight = hight;
  19. 19         print();
  20. 20     }
  21. 21
  22. 22     public void print() {  //打印函数
  23. 23         System.out.println("I'am a " + age + "岁 " + hight + "尺高 tiger!");
  24. 24     }
  25. 25     public static void main(String[] args) {
  26. 26         new JavanTiger(3,3);
  27. 27     }
  28. 28 }
  29. 29 //output
  30. 30 //I'am a 0岁 0尺高 tiger!
  31. 31 //I'am a 3岁 0尺高 tiger!
  32. 32 //I'am a 3岁 3尺高 tiger!  
复制代码

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马