【发布时间】:2021-11-24 07:59:30
【问题描述】:
首先,如果标题具有误导性,我很抱歉。我是编程新手,不知道如何正确描述我的问题。
这是我的代码,我有 1 个父类和 2 个扩展父类和 1 个主类的子类。
Book.java
public class Book {
private String bookTittle;
private String bookAuthor;
public Book(String tittle, String author)
{
this.bookTittle = tittle;
this.bookAuthor = author;
}
public String getTittle()
{
return bookTittle;
}
// other getter and setter
}
Science.java
public class Science extends Book {
private int SciID;
public Science(String tittle, String author, int ScienceID)
{
super(tittle, author);
this.SciID = ScienceID;
}
// setter and getter
}
小说.java
public class Fiction extends Book {
private int fictId;
public Fiction(String tittle, String author, int fictionID)
{
super(tittle, author);
this.fictId = fictionID;
}
// setter and getter
}
LibraryMain.java
import java.util.*;
public class LibraryMain {
private ArrayList<Book> LibBook = new ArrayList<>();
public LibraryMain()
{
LibBook.add(new Science("Frog", "June", 101));
LibBook.add(new Fiction("TimeTravel", "Kiel", 201));
}
public boolean bookSearch(String bookTittle)
{
for (int i = 0;i<LibBook.size();i++)
{
if(LibBook.get(i).getTittle().equalsIgnoreCase(bookTittle)){
return true;
}
}
return false;
}
public static void main(String[] args) {
LibraryMain mainLib = new LibraryMain();
Scanner in = new Scanner(System.in);
System.out.println("--Search book--");
System.out.print("Book tittle: ");
String tittle = in.nextLine();
if(mainLib.bookSearch(tittle)){
System.out.println("Book Found!");
}
else{
System.out.println("Not Found");
}
}
}
目前LibraryMain上的方法只能查找该书是否存在于arraylist中,有没有办法知道这本书来自哪个类?
当前结果是
--Search book--
Book tittle: frog
Book Found!
我希望结果如何
--Search book--
Book tittle: frog
Book Found! frog is a science book
【问题讨论】:
-
如果要获取对象的类型,可以使用
getClass()(例如Book b = new Science(); b.getClass(); //returns Science.class)或使用instanceof(例如if(b instanceof Science) { ...})进行检查。然而,依赖继承而不关心类型(取决于需求和设计)或者在需要时返回一些标识符可能会更好。 -
顺便说一句 - 让 'Book' 类包含一个名为 'Genre' 的字段通常更有意义,而不是每个类型都是它们自己的类。
-
我正在尝试学习 oop 和 arraylist,这导致我将它们变成了一个不同的类
标签: java