JAVA中如何覆盖Object类的toString()方法。

publicclassCar{Stringmaker;Stringcolor;doublevalue;publicStringtoString(){System.out.... public class Car{
String maker;
String color;
double value;
public String toString(){
System.out.println(new Car());
return null;
}
public static void main(String[] args){
Car Toyota=new Car();
Toyota.maker="Japan";
Toyota.color="red";
Toyota.value=250000.0;
System.out.println(new Car());
这段程序中如何改动才能使最后的输出结果是类的所有属性?
我的意思就是如何编写一个类通过覆盖Object类的toString()方法,打印你创建这个类的所有属性。
展开
 我来答
蓝冰飞寒
2009-04-02 · TA获得超过352个赞
知道答主
回答量:133
采纳率:100%
帮助的人:75.4万
展开全部
参考了API,这个方法是可以重写的,但是必须遵循原来的规则,下面是API上的解释:toString

public String toString()

返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。

Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())

返回:
该对象的字符串表示形式。

下面是改正后的程序。
你的那句System.out.println(new Car());有问题,
public class Car{
String maker;
String color;
double value;
public String toString(){
return "这个汽车是"+maker+"制造的"+","+"颜色是"+color+"很好看的!"+"价钱是"+value;

}
public static void main(String[] args){
Car Toyota=new Car();
Toyota.maker="Japan";
Toyota.color="red";
Toyota.value=250000.0;

System.out.println(Toyota);
}
}
Foxcoming
2009-04-02 · TA获得超过692个赞
知道小有建树答主
回答量:718
采纳率:0%
帮助的人:822万
展开全部
Object的方法是不能覆盖的。
如果仅仅是想把你自己定义的一系列类的toString方法定义好,那么可以用反射。
class YourObject
{
public string toString ()
{
getClass ().getFields () ;
for each field
print (field.name = field.value ) ;
}
}

估计用动态修改字节码的办法也不行,因为Object是早于你的类加载的。而且用的是BootStrap class loader。

要不然就单独定义一个classLoader,重新加载Object类,然后用字节码修改的方式来完成。感觉很麻烦。

还有一种方法相对简单一些,就是把Object的源代码拿过来,改成你需要的代码。编译后,替换原来的JRE中的class文件。但这种方法不能改动已经覆盖了toString实现的那些类。

不知道你想达到什么目的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chaowei_yuwen
2009-04-02 · TA获得超过224个赞
知道答主
回答量:88
采纳率:0%
帮助的人:93.3万
展开全部
public class Car{
String maker;
String color;
double value;
public Car()
{
this.maker="";
this.color="";
this.value=0.0;
}
public Car(String maker,String ccolor,double value)
{
this.maker=maker;
this.color=ccolor;
this.value=value;
}
//Override
public String toString(){
return "制造地:"+this.maker +" 颜色:"+this.color+" 价格:"+this.value;
}
public static void main(String[] args){
Car Toyota=new Car("Japan","red",25000d);
System.out.println(Toyota.toString());
}
} 可以直接执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flsfycy
推荐于2018-03-07 · TA获得超过729个赞
知道小有建树答主
回答量:1002
采纳率:0%
帮助的人:715万
展开全部
public class Car{
String maker;
String color;
double value;
public String toString(){
return ("\nMaker: " + maker + "\nColor: " + color + "\nvalue: " + value);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lglgis
2009-04-02 · 超过11用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:31.6万
展开全部
public String toString(){
return maker+","+color+","+value;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式