我有3个班级,书籍,儿童读物和图书馆。 ChildrensBook扩展了Book类。ChildrensBook包含附加变量RecommendationAge。库包含一个可以同时包含Book和ChildrensBook对象的数组。在类Library中,我必须创建方法int forChildren(int n),该方法返回数组Library中存在多少个小于或等于n的childsBook。问题是在库数组中既有Books也有ChildrensBooks,所以我无法访问RecommendationAge变量,因为它仅在儿童读物内。我该怎么办?
public class Library {
private ArrayList <Book> collection;
public Library(ArrayList <Book> c){
collection=c;
}
public int forChildren(int n) {
int count=0;
for(int i=0;i<collection.size();i++) {
if((collection.get(i).getRecommendedAge)<=n) {
count++;
}
}
return count;
}
public class Book {
private String title;
private String author;
public Book(String title, String author){
this.title=title;
this.author=author;
}
}
public class ChildrensBook extends Book {
private int recommendedAge;
public ChildrensBook(String title,String author,int recommendedAge){
super(title,author);
this.recommendedAge=recommendedAge;
}
public int getRecommendedAge() {
return recommendedAge;
}
}
基本上,我看到两种可能的方法:
将有关推荐年龄的知识提高到Book
类,以便每本书都有推荐年龄。
[Book
是否是儿童读物,决定对书进行迭代-尽管不是特别面向对象,但可以使用Java的instanceof
运算符来实现。