toString不输出,简单的层次结构类程序

问题描述 投票:0回答:1

我有两个接口和两个类,Order类是CoffeeBagOrder的父类,没有编译器错误,它只是没有显示,我不明白为什么不

订单类:

public abstract class Order implements OrderInterface {
    //variables
    final static double SALES_TAX = 0.1; //not initialised by constructor
    int unitWeight, numberOfUnits;

    public Order() {
        unitWeight=0;
        numberOfUnits=0;
    }

    public Order(int unitWeight, int numberOfUnits) {
        unitWeight=unitWeight;
        numberOfUnits=numberOfUnits;
    }


    public void numberOfItems(int number) {
        numberOfUnits=number;

    }

    public void unitWeight(int weight) {
        unitWeight=weight;

    }



}

CoffeeBagOrder类

public class CoffeeBagOrder extends Order implements Sales {

    final static double PRICE_PER_KG = 5.55;

    double salesBeforeTax;
    double tax;
    double totalSales;

    public CoffeeBagOrder() {

    }

    public CoffeeBagOrder(int unitWeight, int numberOfUnits) {
        super(unitWeight,numberOfUnits);


    }

    public double calculateSalesBeforeTax() {
        salesBeforeTax= unitWeight*numberOfUnits*5.50;
        return salesBeforeTax;
    }


    public double calculateSalesTax() {
        tax=salesBeforeTax*0.10;
        return tax;
        }



        public double calculateTotalSales() {
        totalSales=salesBeforeTax+tax;
        return totalSales;

    }
    //Override
    public String toString() {
        return "Price before tax: "+calculateSalesBeforeTax()+"\nTax: "+calculateSalesTax()+"\nTotal price: "+calculateTotalSales();
    }


}

主要

import java.util.Scanner;
public class Tester {
    public static void main (String[] args) {



        Scanner sc= new Scanner(System.in);
        System.out.print("Enter number of bags sold: ");
        int unitWeight=sc.nextInt();

        System.out.print("Enter weight of bags in kilograms: ");
        int numberOfUnits=sc.nextInt();

        CoffeeBagOrder customer=new CoffeeBagOrder(unitWeight,numberOfUnits);

        customer.toString();


    }

}

我省略了接口,但是相应地遵循它们,提前感谢,我也不确定我是否有效地编写了构造函数,因为它们都是相同的?

java override main tostring superclass
1个回答
0
投票

像下面一样更改Order类构造函数(检查这个。):

public Order(int unitWeight, int numberOfUnits) {
        this.unitWeight=unitWeight;
        this.numberOfUnits=numberOfUnits;
    }

你没有在构造函数中更新类字段!它将参数分配给自己。

并在CoffeeBagOrder中修改toString,如下所示(检查注释):

@Override
    public String toString() {
        return "Price before tax: "+calculateSalesBeforeTax()+"\nTax: "+calculateSalesTax()+"\nTotal price: "+calculateTotalSales();
    }

当您打算覆盖时,始终使用@Override注释,以使其生效,这是最佳实践,而不是显式调用toString()。

并打印使用

System.out.println(customer);
© www.soinside.com 2019 - 2024. All rights reserved.