如何使用Java子类

问题描述 投票:0回答:1

我有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;
    }
}
java object methods abstract-class extends
1个回答
0
投票

基本上,我看到两种可能的方法:

  1. 将有关推荐年龄的知识提高到Book类,以便每本书都有推荐年龄。

  2. [Book是否是儿童读物,决定对书进行迭代-尽管不是特别面向对象,但可以使用Java的instanceof运算符来实现。

© www.soinside.com 2019 - 2024. All rights reserved.