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

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()方法,打印你创建这个类的所有属性。

参考了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);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-02
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实现的那些类。

不知道你想达到什么目的?
第2个回答  2009-04-02
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());
}
} 可以直接执行
第3个回答  推荐于2018-03-07
public class Car{
String maker;
String color;
double value;
public String toString(){
return ("\nMaker: " + maker + "\nColor: " + color + "\nvalue: " + value);
}本回答被提问者和网友采纳
第4个回答  2009-04-02
public String toString(){
return maker+","+color+","+value;
}

JAVA中如何覆盖Object类的toString()方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:getClass().getName() + '@' + Integer.toHexString(hashCode())返回:该对象的字符串表示形式。下面是...

java中toString()方法怎么用
因为在java中 Object类是基类,所以每个类都会有toString方法。System.out.println(Object)实际上就是调用 object的toString方法。我们用的比较多的就是 String类的toString 方法,String类重写了Object的toString方法,用于返回String的字符串值。因为它是object里面已经有了的方法,而所有类都是继承object,所以“所有对象都...

java编程里面to String有什么作用啊?
toString是object里面已经有了的方法,而所有类都是继承object,所以“所有对象都有这个方法”它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法 总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一...

Integer包装类的ToString()方法有没有重写父类Object类的此方法?
Integer中覆盖Object的toString是这样写的:public String toString() { return String.valueOf(value);} 而楼上找的是toString()的多态方法。从jdk1.5后,java有了自动装箱与拆箱机制,可以将基本数据类型与其封装类之间自动转换,而不需要程序显示的转换。比如泛型不能 是基本数据类型,但是有了自动装箱...

tostring方法怎么用
Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。toString方法将对象转换为字符串。

在Java中,直接将类的对象使用system.out.println输出,其中输出的类的具...
因为直接输出一个类的对象的时候,会调用这个类的toString()方法,这个方法有些类是覆盖了的,比如String,Integer。你自己写的类没有覆盖这个方法的话就是继承Object类的这个方法,Object中toString()方法的实现是这样的 getClass().getName() + "@" + Integer.toHexString(hashCode())后面跟的是这个...

创建一个类--矩阵,要求覆盖Object方法toString。麻烦各位大师帮忙看下...
把this.a=a改成this.a=a;(后面加个分号)就行了。

Java中什么时候需要显示重载toString方法
api中对于Object类,默认打印一个对象(如果这个对象的类在api上的方法中没有toString()方法)的时候,直接打印出getClass().getName() + '@' + Integer.toHexString(hashCode())这样的格式,如果这个对象类的方法中带有toString()方法,比如像String这个类中就有toString()这个方法,那么就不需要重载,...

java中怎样将object类型转化为string
方法1:采用 Object.toString()方法 请看下面的例子:Object object = getObject();System.out.println(object.toString());在这种使用方法中,因为java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用此方法。但在使用时要注意,必须保证object不是null值,否则将...

JAVA的tostring()方法的作用是什么呢?
Java的toString()方法是一个核心概念,它在Object类中定义,所有类都继承了这一方法。其主要作用是将对象转换为字符串形式,便于调试和输出。默认情况下,toString()返回的是对象的内存地址和哈希码,例如:***.orc@11b86e7或***.orc@11b8要6e7。但这种默认输出通常不够直观,因此开发者需要根据需求...

相似回答