abstract class employee1{
private String name;
private String num;
private Mydate birthday;
abstract int earnings();
public String toString()
{
return "姓名:"+name+","+"工号:"+num+","+"生日:"+birthday.toDateString();
}
}
class SalariedEmployee extends employee1{
private int monthlysalary;
public int earnings() {
return monthlysalary;
}
public String toString()
{
}
}
子类tostring怎么输出父类的私有属性和它自己的属性
可以在父类封装一个方法给子类调用,
父类属性加上get方法,子类toString调用直接打印
让子类可以更好的继承和打印自己的属性,可以采用模板方法的设计模式实现。在父类中新建一个createToStringBuilder(可以是其他名称,但是最好不要以get开头)的保护方法,创建和返回一个ToStringBuilder对象,包含当前类的所有属性;重写toString方法,调用this.createToStringBuilder().toString()。子类继承父类,只要重写createToStringBuilder方法,调用父类的createToStringBuilder方法继续append添加子类的属性即可,不必再次重写toString方法。
示例:
父类BaseResponse中:
/**
* 构造ToStringBuilder
*
* @return ToStringBuilder
*/
protected ToStringBuilder createToStringBuilder() {
return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE)
.append("retCode", retCode)
.append("msg", msg);
}
@Override
public String toString() {
return this.createToStringBuilder().toString();
}
子类GetUserInfoResponse继承BaseResponse,重写createToStringBuilder方法:
@Override
protected ToStringBuilder createToStringBuilder() {
return super.createToStringBuilder().append("user", user);
}
结束语:有很多好的开源框架值得我们学习和使用,其中Apache Commons是佼佼者,使用开源框架和学习他们的各种实现,可以使你更快的进步。