我不能从我的子类中获取构造函数来读取我放入它们的字符串

时间:2013-11-21 14:23:31

标签: java

我试图从我的子类中获取构造函数来读取我放在其中的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);  
   }    
}  

2 个答案:

答案 0 :(得分:0)

那是因为你将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);

答案 1 :(得分:0)

这是你应该做的。您应该传递您希望类型具有的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);  
 }