为什么toString方法在被覆盖时不起作用?

时间:2015-08-08 18:14:51

标签: java override

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

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 Metod打印汽车信息,它会是怎样的?我在Car课上写了一个,但它没有用,功能是从汽车自己的课程分配..

这是我的toString metod

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

1 个答案:

答案 0 :(得分:1)

首先,您必须覆盖toString()这样的java.lang.Object方法:

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);
}