2015-08-08 52 views
0
public abstract class Car { 
    // This class includes common properties for a car, in this way we wont have to change if we need to add a new car brand 
     public String name; 
     public String colour; 
     public int model; 
     public String feature; 
     public String getFeature() { 
      return feature; 
     } 
     public void setFeature(String feature) { 
      this.feature = feature; 
     } 
     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 
     public String getColour() { 
      return colour; 
     } 
     public void setColour(String colour) { 
      this.colour = colour; 
     } 
     public int getModel() { 
      return model; 
     } 
     public void setModel(int model) { 
      this.model = model; 
     } 
    } 

Test.java为什么toString方法在覆盖时不起作用?

import java.util.Scanner; 

public class Test { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     CarFactory carfactory = new CarFactory(); 

     System.out.println("Hello, please enter your car brand \n BMW \n MERCEDE \n OPEL"); 
     Car usercar = null; 


     String usertext = input.nextLine(); 
     usercar = carfactory.makeCar(usertext); 
     System.out.println("enter colour of your car"); 
     usertext = input.nextLine(); 
     usercar.setColour(usertext); 
     System.out.println("enter model of your car"); 
     usertext =input.nextLine(); 
     usercar.setModel(Integer.parseInt(usertext)); 

     System.out.println("Your Car Information;\n "+ usercar.getName()+" \n Colour:" + usercar.getColour() + "\n Model "+ usercar.getModel()+ "\n Your car's plus point is " + usercar.getFeature()); 

     } 

的问题是,如果我要打印汽车信息与的toString梅托德,怎么会是谁?我写了一个在汽车类,但是它没有工作,特点是从汽车自身的类分配..

这里是我的toString梅托德

public String toString(){ 
    return "Your Car Information;\n "+ getName()+" \n Colour:" + getColour() + "\n Model "+getModel()+ "\n Your car's plus point is " +getFeature(); 
} 
+1

请重新格式化您的代码 - 缩进每个代码行至少4个空格,否则几乎不可读。另外 - 你想要toString()做什么exacly? –

+1

“*如果我想用toString Metod打印汽车信息,它将如何?*”您只需使用'System.our.println(yourCar)'。 'println'将在内部调用'toString'方法并使用它的结果。它类似于'System.our.println(yourCar.toString())' – Pshemo

+1

“*如果我想用toString Metod打印汽车信息*” - 你的'toString'方法不应该打印任何东西。它应该简单地返回一个字符串。如果要打印该字符串,请使用@Pshemo建议的“System.out.println(carObject)”。 – aioobe

回答

1

首先,你必须覆盖的java.lang.ObjecttoString()方法是这样的:

class Car { 
    ... 
    @Override 
    public String toString() { 
     return "Your Car Information;\n " + getName() + " \n Colour:" + 
       getColour() + "\n Model " + getModel() + "\n Your car's plus point is " + 
       getFeature(); 
    } 
} 

其次,你可以使用它像这样:

public static void main(String[] args) { 
    // 'CarClass' is a no-abstract class, who extends the 'Car' class 
    Car car = new CarClass(); 
    // the first way 
    String information = car.toString(); 
    System.out.println(information); 
    // the second way 
    System.out.println(car); 
}