我正试图从我的子类中获取构造函数,以读取我放入其中的Strings
。我一直在为输出获取null
,当它应该是ChildrensBook
时,我不知道该怎么办。任何帮助都很感激,谢谢。
这是我的任务:
设计并实现一组定义阅读材料类型的类:书籍、小说、杂志、技术期刊、教科书等。包括描述材料的数据值,如页数和作者姓名。包括为每个类命名并打印适当消息的方法。创建一个主驱动程序类来安装几个类。
我的Java代码:
驱动程序:
public class Reading{
public static void main(String[]args)
{
Book book = new Book(null, 0, 0, 0);
Magazine mag = new Magazine(null, 0, 0);
Journal journal = new Journal(null, 0, 0, 0);
Textbook txt = new Textbook(null, 0, 0, 0);
Manual manual = new Manual(null, 0, 0, 0);
book.print();
mag.print();
journal.print();
txt.print();
manual.print();
}
特级:
public class ReadingMaterial {
String type;
int pages, characters, numPictures;
public ReadingMaterial(String type, int pages, int characters, int numPictures)
{
this.type = type;
this.pages = pages;
this.characters = characters;
this.numPictures = numPictures;
}
public void print()
{
System.out.println("Reading Material Data: ");
System.out.println("");
System.out.println("Type of reading material: " +type);
System.out.println("Number of pages: " +pages);
System.out.println("Number of primary characters: " +characters);
System.out.println("Number of pictures: " +numPictures);
System.out.println("");
}
}
其中一个子类:
public class Book extends ReadingMaterial
{
public Book(String type, int pages, int characters, int numPictures)
{
super("ChildrensBook", 22, 5, 20);
}
}
这就是您应该做的。您应该传递类型所期望的String
。
Book book = new Book("ChildrensBook", 0,0,0);
你得到null
是因为你正在传递它null
。
编辑:
此外,在命名变量时,请使用正确的编码标准。一个变量应该以一个小写字母开头,然后用骆驼大小写。
public Book(String nameOfTheBook, int pages, int characters, int numPictures){
super(nameOfTheBook,22,5,20);
}
这是因为您正在将null
传递给您的子类:
Book book = new Book(null, 0, 0, 0);
Magazine mag = new Magazine(null, 0, 0);
Journal journal= new Journal(null, 0, 0, 0);
Textbook txt = new Textbook(null, 0, 0, 0);
Manual manual= new Manual(null, 0, 0, 0);