当前位置: 首页 > 知识库问答 >
问题:

重写和实现toString

丁经国
2023-03-14
public class Student {

// Instance Variables
private String name;
private int age;
private String address;

// Default Constructor
public Student() {
    this("Not Given", 0, "Not Given");
}

// Parameterized constructor that takes in values
public Student(String name, int age, String address) {
    this.name = name;
    this.age = age;
    this.address = address;
}

// Getters and Setters
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

public String getAddress(){
    return address;
}
public void setAddress(String address) {
    this.address = address;
}

// toString() to be overriden
@Override
public String toString() {
    return "Name: " + this.name + "\n" + "Age: " + this.age + "\n" + "Address: " + this.address;
}
}

`

public class MealCard {

private static int numberOfMealCards;
private final static int DEFAULT_BALANCE = 1000;
private int itemValue;
private int topUpValue;
public int newBalance;

// Getters and Setters
public int getItemValue() {
    return itemValue;
}
public void setItemValue(int itemValue) {
    this.itemValue = itemValue;
}

public int getTopUpValue() {
    return topUpValue;
}
public void setTopUpValue(int topUpValue) {
    this.topUpValue = topUpValue;
}

// purchaseItem method for when students buy food
public int purchaseItem() {
    newBalance = DEFAULT_BALANCE - itemValue;
    return newBalance;
}

// purchasePoints method for students topping up their meal card balance
public int purchasePoints() {
    newBalance = DEFAULT_BALANCE + topUpValue;
    return newBalance;
}

// Overriden toString method
@Override
public String toString() {
    return "Name: " + getName + "\n" + "Age: " + getAge + "\n" + "Address: " + getAddress +
            "\n" + "Meal Card Balance: " + newBalance + "\n" + "Number of Meal Cards: " + numberOfMealCards;
}

}

共有1个答案

阮桐
2023-03-14

我认为用一个答案来说明这一点比用大量的评论来说明要容易得多。

在类中提供ToString的实现,归结起来就是提供该类的String表示,仅此而已。您要做的是为一个不相关的类(student)提供字符串信息,mealcard对这个类一无所知(也不应该)。

实现所需目标的方法可能是让student更新以保存对mealcard的引用(阅读:每个学生都有一个mealcard),并且在toStringstudent实现中,使用您的饭卡引用从饭卡类获取toString数据

public class MealCard {

    //... skipped over for simplicity

    @Override
    public String toString() {
        return "Item Value = " + this.getItemValue() + ", TopUpValue = " + this.getTopUpValue() + " ... "; // and so on...
    } 
}
public class Student {

    // other student data
    MealCard mealCard;  // set in constructor

    // ... other methods

    @Override
    public String toString() {
        return " ... other student data... MealCard = " + getMealCard().toString(); // use the mealcard reference to get string info

    }
}
 类似资料:
  • 问题内容: 每当抛出javascript异常时,我们还想做一些额外的事情。 从以下文档: 角度表达式中任何未捕获的异常都委托给此服务。默认的实现只是将$ log.error委托给浏览器控制台。 它说“默认实现”的事实使我认为有一种方法可以为服务提供我们自己的实现,并在引发异常时做我们想要的事情。我的问题是,你如何做到这一点?我们如何使所有异常都保留给该服务,然后提供我们希望发生的功能? 问题答案:

  • 我创建了一个(个人、学生、员工、教职员工)类。Person必须将Student和Employee分为子类。Employee有两个子类:教员和职员。我已经完成了所有的编码,他们工作得很好,除了我的驱动程序类TestPerson程序给出了编译错误 注:一个测试程序,创建一个人、学生、员工、教职员工,并调用他们的toString方法。 驱动程序类TestPerson的错误。以下是java:- **我只是

  • 本文向大家介绍PyTorch实现重写/改写Dataset并载入Dataloader,包括了PyTorch实现重写/改写Dataset并载入Dataloader的使用技巧和注意事项,需要的朋友参考一下 前言 众所周知,Dataset和Dataloder是pytorch中进行数据载入的部件。必须将数据载入后,再进行深度学习模型的训练。在pytorch的一些案例教学中,常使用torchvision.da

  • 本文向大家介绍js重写方法的简单实现,包括了js重写方法的简单实现的使用技巧和注意事项,需要的朋友参考一下 如下所示: 上面的内容来自《javascript语言精粹》,真的很不错。 以上这篇js重写方法的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我遵循本指南https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/default-interface-methods使用默认接口实现功能。我复制了一段在接口中定义默认实现的代码,然后在接口中重写它: 但它给出了一个错误和一个警告。设置为,为。为什么即使在官方文件中有描述也不起作用

  • 本文向大家介绍Java中equals()方法重写实现代码,包括了Java中equals()方法重写实现代码的使用技巧和注意事项,需要的朋友参考一下 Java中equals()方法重写实现代码   Java中的equals()方法是在Object类中定义,Object类是所有类的父类。换句话说,任何类都隐含地继承了该方法。判断两个对象的内容是否相同,必须使用equals()方法,对于没有重写该方法的