java - 编写结合使用接口(interface)和单独类的 Java 方法

标签 java

这是一项使用 Java 接口(interface)的作业。总共有 3 个类和一个接口(interface):SellerSellerImplSellerTestDriverProduct。我要在 SellerImpl 类中实现 Seller 接口(interface),并使用我在 SellerTestDriver 类中编写的代码测试输出。到目前为止,只有一种方法给出了我想要的结果——getName()。其他方法似乎调用了 Product 类,但我无法编写任何可用的代码。我想要的是阅读的方法:

name – Baker(已经这样做了);

product - 面包;提供产品——真实;

sellProduct() – 只是一行总结卖家和产品的文本。

如有任何帮助,我们将不胜感激!

卖家界面:

     public interface Seller
{
public String getName();
public Product getProduct();
public boolean provideProduct(String productName);
public Product sellProduct();
}

SellerImpl 类:

    public class SellerImpl implements Seller
{
protected String name;
protected Product product;

// TODO: Complete this constructor
public SellerImpl(String name, Product product)
    {
    this.name = name;
    this.product = product;
    }

// TODO: Complete these methods 
public String getName()
    {
    return name;
    }

public Product getProduct()
    {
    return product;
    }
public boolean provideProduct(String productName)
    {
    if (productName.length() == 0) {
    return null != null;
    }
    else {
    return true;
    }
    }


public Product sellProduct()
    {
    return product;
    }

SellerTestDriver 类:

    public class SellerImplTestDriver
{
    public static void main(String[] args)
        {
        Seller seller = new SellerImpl("Baker", new Product("Bread", 1.95));
        // TODO: Write a test for the getName() method
        System.out.println("Seller is a: " + seller.getName());

        // TODO: Write a test for the getProduct() method
        System.out.println("Seller offers: " + seller.getProduct());

        // TODO: Write a test for the provideProduct() method
        System.out.println("Does this seller supply this item? " + seller.provideProduct("Bread"));

        // TODO: Write a test for the sellProduct() method
        System.out.println(seller.getName() +" sells " );           }

Product 类(我根本没有被指示去触摸):

    public class Product
{
protected String itemName;
protected double itemPrice;

public Product(String name, double price)
    {
    itemName = name;
    itemPrice = price;
    }
public String getName()
    {
    return itemName;
    }
public void setName(String itemName)
    {
    this.itemName = itemName;
    }

public double getPrice()
    {
    return itemPrice;
    }
public void setPrice(double itemPrice)
    {
    this.itemPrice = itemPrice;
    }
}

我目前的结果:

卖家是:贝克 - 我喜欢这个,它是正确的

卖家报价:seller.Product@7a3e72

该卖家是否提供该商品?假的

Buyer will purchase seller.Product@7a3e72

最佳答案

有了这个:Product@7a3e72

您将看到 Product 的 toString() 方法返回的字符串,它继承自 Object,所有 Java 类的父类。 Object 中的默认 toString() 方法显示类名、@ 符号和对象的 hashCode,并且所有类自动继承此方法,除非它们或它们的其中之一父类选择覆盖它。

要解决此问题,您需要这样做:为您的 Product 类提供一个体面的 public String toString() 覆盖方法,该方法返回一个完整描述 Product 状态的字符串。您的 toString() 方法可能会同时返回产品的名称和价格。像这样的东西:

@Override
public String toString() {
  return "Product: " + name + ", " + price;
}

甚至更好,

@Override
public String toString() {
  return "Product: " + name + ", " + currencyFormat.format(price);
}

其中 decimalFormat 是一个使用货币实例的 NumberFormat 变量:

private NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();

关于java - 编写结合使用接口(interface)和单独类的 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031131/

相关文章:

java - 在没有数组的情况下求行中数字的总和

java - JAXB 将命名空间添加到父元素而不是包含的子元素

java - Java中根据多个参数降序排序

java - 如何匹配 java/kotlin 中的所有相似符号(e、ę 或 é)

java - 如何设置 TOPOLOGY_MAX_SPOUT_PENDING 参数

java - 小部件不更新 View

java - Netbeans 中的 UML 逆向工程已损坏

java - 用Java解析HTML?

Java 生产者/消费者并发问题 - 尝试读取对象时出现 NoSuchElementFound 异常

java - 在 Java 中比较两个表列值