package book1;
import java.util.ArrayList;
public abstract class Book {
public String Book (String name, String ref_num, int owned_copies, int loaned_copies ){
return;
}
}
class Fiction extends Book{
public Fiction(String name, String ref_num, int owned_copies, String author) {
}
}
当我将值输入变量参数并使用它调用它们时
public static class BookTest {
public static void main(String[] args) {
ArrayList<Book> library = new ArrayList<Book>();
library.add(new Fiction("The Saga of An Aga","F001",3,"A.Stove"));
library.add(new Fiction("Dangerous Cliffs","F002",4,"Eileen Dover"));
for (Book b: library) System.out.println(b);
System.out.println();
}
}
我得到了这个的返回值:
book1.Fiction@15db9742
book1.Fiction@6d06d69c
book1.NonFiction@7852e922
book1.ReferenceBook@4e25154f
如何转换类以返回字符串值而不是对象值?我需要在不更改BookTest类的情况下执行此操作。我知道我需要使用字符串来转换值。但我不知道如何用它来获取回报价值。有人可以指出我如何将此输出转换为字符串值的正确方向?
答案 0 :(得分:2)
您需要覆盖toString()
或Book
课程中的Fiction
方法。该方法实际上是在Object
类中声明的,所有类都继承自。{/ p>
@Override
public String toString(){
return ""; // Replace this String with the variables or String literals that you want to return and print.
}
System.out.println()
和System.out.print()
在接收参数中的对象时调用此方法(而不是基元,例如int
和float
)。< / p>
要引用方法中的变量,您需要在类中声明它们并通过类的构造函数存储它们。
例如:
public abstract class Book {
private String name;
private String reference;
private int ownedCopies;
private int loanedCopies;
public Book (String name, String reference, int ownedCopies, int loanedCopies) {
this.name = name;
this.reference = reference;
this.ownedCopies = ownedCopies;
this.loanedCopies = loanedCopies;
}
@Override
public String toString(){
return name + ", Ref:" + reference + ", OwnedCopies: " + ownedCopies + ", LoanedCopies: " + loanedCopies; // Replace this String with the variables or String literals that you want to return and print.
}
}
答案 1 :(得分:2)
您需要覆盖Book类的toString()方法。在这个类中,您可以根据需要生成String。例如:
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(this.author).append(": ").append(this.title);
return sb.toString();
}
答案 2 :(得分:1)
您定义的课程,不存储任何值。换句话说,构建一本新书很有用。您需要提供字段:
public abstract class Book {
private String name;
private String ref_num;
private int owned_copies;
private int loaned_copies;
public String Book (String name, String ref_num, int owned_copies, int loaned_copies) {
this.name = name;
this.ref_num = ref_num;
this.owned_copies = owned_copies;
this.loaned_copies = loaned_copies;
}
public String getName () {
return name;
}
//other getters
}
现在一个对象基本上是一组字段。如果要打印某些内容,可以访问并打印其中一个字段,例如:
for (Book b: library) System.out.println(b.getName());
在Java中,您还可以通过覆盖 toString
方法提供打印对象的默认方式:
@Override
public String toString () {
return ref_num+" "+name;
}
在Book
班。
答案 3 :(得分:0)
需要为您的对象提供一个ToString()覆盖。
http://www.javapractices.com/topic/TopicAction.do?Id=55
示例:
@Override public String toString()
{
return name;
}
其中name是Class中的字符串。
答案 4 :(得分:0)
我希望您已将传递的参数分配给类的某些属性。现在,完成后,您可以覆盖Book
中的toString()方法以返回自定义字符串进行打印。