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()方法,打印你创建这个类的所有属性。 展开
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()方法,打印你创建这个类的所有属性。 展开
8个回答
展开全部
参考了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);
}
}
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);
}
}
展开全部
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实现的那些类。
不知道你想达到什么目的?
如果仅仅是想把你自己定义的一系列类的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实现的那些类。
不知道你想达到什么目的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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());
}
} 可以直接执行
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());
}
} 可以直接执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class Car{
String maker;
String color;
double value;
public String toString(){
return ("\nMaker: " + maker + "\nColor: " + color + "\nvalue: " + value);
}
String maker;
String color;
double value;
public String toString(){
return ("\nMaker: " + maker + "\nColor: " + color + "\nvalue: " + value);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public String toString(){
return maker+","+color+","+value;
}
return maker+","+color+","+value;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询