关于类和构造方法的调用

风铃浩 2014-04-09 07:36:39
类是一种数据类型,那么也就可以被调用。在类中,调用它自己本身这个类作为参数,是怎么用的?有什么意义?尤其是当类尚未被完成时就被调用,会产生影响么?这种现象和递归调用有没有相似之处?
注:鄙人学习java日浅,请少用术语,详细说明,感激不尽。下面有一段代码用以帮助说明。

public class Money {
private int totalFen;

public Money(int yuan,int jiao,int fen){
this(yuan*100+jiao*10+fen); //构造方法的相互调用
}

//构造方法的重载可以提高复用,设默认值
public Money(int total){
totalFen=total;
}
@Override //检查java中是否有原方法
public String toString(){
return String.format("%d元%d角%d分",getYuan(),getJiao(),getFen());
}
@Override
public boolean equals(Object obj){
if(obj==null) return false;
if(this==obj) return true;
if(obj instanceof Money) return false;
Money m=(Money)obj;
return this.totalFen==m.totalFen;
}
public Money add(Money a){
return new Money(this.totalFen+a.totalFen);
}
public Money subtract(Money a){
return new Money(this.totalFen-a.totalFen);
}
public Money multiply(int a){
return new Money(this.totalFen*a);
}

public int getYuan() {
return totalFen/100;
}


public int getJiao() {
return Math.abs(totalFen/10)%10;
}


public int getFen() {
return Math.abs(totalFen)%10;
}

}
]
...全文
137 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
风铃浩 2014-04-10
  • 打赏
  • 举报
回复
引用 1 楼 u013505962 的回复:
这个类不会发生未完成现象 递归调用是把第N次(可以为任何数)的值当作第n+1次运算的基础,这个类和递归没有关联
相当感谢 我在写add方法的时候,整个类还没有完成,但却接受了一个Money类型的参数,不会有影响吗
飞翔的裤衩子 2014-04-09
  • 打赏
  • 举报
回复
public class Money { private int totalFen; public Money(int yuan,int jiao,int fen){ this(yuan*100+jiao*10+fen); //构造方法的相互调用 // 这个里面只有一个参数这个里面只有一个参数所以调用的应该是下面构造方法 } //构造方法的重载可以提高复用,设默认值 public Money(int total){ totalFen=total; //这块是把上面那个全转换成fen赋值给totalFen } @Override //检查java中是否有原方法 public String toString(){ return String.format("%d元%d角%d分",getYuan(),getJiao(),getFen()); //格式化输出 } @Override public boolean equals(Object obj){ if(obj==null) return false; if(this==obj) return true; if(obj instanceof Money) return false; Money m=(Money)obj; return this.totalFen==m.totalFen; } //上面这个重写了equals的方法,主要用来在主函数中调用进行比较 public Money add(Money a){ return new Money(this.totalFen+a.totalFen); } public Money subtract(Money a){ return new Money(this.totalFen-a.totalFen); } public Money multiply(int a){ return new Money(this.totalFen*a); } //这个部分(上)是关于money的各种运算方法 public int getYuan() { return totalFen/100; } public int getJiao() { return Math.abs(totalFen/10)%10; } public int getFen() { return Math.abs(totalFen)%10; } //这部分是取得值 } 这个类不会发生未完成现象 递归调用是把第N次(可以为任何数)的值当作第n+1次运算的基础,这个类和递归没有关联

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧