继承和构造函数代码所需的帮助

时间:2016-09-14 03:28:12

标签: java inheritance constructor

我正在研究继承问题。我有一本超级的书。然后我有一个扩展书的课程电话。然后我有一个使用数组生成输出的驱动器PolyMain。我的任务是:

* Phone类的构造函数应该总结whitePages + yellowPages以获得书中的总页数,并将其作为超级调用中的单个参数传递给Book超类。请记住,书中的总页数和书名都是在Book类的构造函数中设置的。

修改PolyMain类以创建至少一个电话簿并将其存储在库中。您现在应该能够打印库而无需修改PolyMain类中定义的打印方法。*

输出应该有标题,页数(总数),黄页数和#白页。下面的程序给了我输出。

然而,PolyMain添加了整数示例:library [2] = new Novel(" Animal Farm",250,9);已经添加了" 250和9"以及为页面和章节打印的内容。

如果我必须将数字添加到PolyMain类,我如何确定我的构造函数是在总结yellowPages和whitePages? library [3] = new Phone(" Black Hills Directory",600,350,250); 如果我不添加" 600,350,250"或一些整数我得到一个错误,它不会编译。

以下是超类的代码:

public class Book  
{   
  private String title;     
  private int pages;    

  public Book(String title, int pages)    
  {     
   this.title = new String(title);      
   setPages(pages);   
  }    

 public void setPages(int pages)    
 {     
  this.pages = pages;   
 }    
 public int getPages()    
 {      
  return pages;    
 }    
 public void print()    
 {     
  System.out.print(title + " has " + pages + " pages");   
  } 
} 

这是我的孩子班。

public class Phone extends Book  
{   
    private int yellowPages = 250;
    private int whitePages = 350;


 public Phone (String title, int pages, int whitePages, int yellowPages)    
{  
  super(title, pages);  

   this.whitePages = whitePages;
   this.yellowPages = yellowPages;
   pages = whitePages + yellowPages; 
  }    
 public void print()    
 {     
  super.print();     
  System.out.println(", " + yellowPages + " yellowPages, " + "and " +
                    whitePages + " whitePages." );   
 } 

}

这是我的驱动程序类。

 public class PolyMain  
 {   
 public static void main(String [] args)    
 {     
  Book [] library = new Book [5];      
  library[0] = new Novel("Jaws", 300, 15);     
  library[1] = new Almanac("New World ", 100, 50);     
  library[2] = new Novel("Animal Farm ", 250, 9); 
  library[3] = new Phone("Black Hills Directory ", 600, 350, 250);   
  listBooks(library);    
 }     
  static void listBooks(Book [] library)    
 {     
  for (int i = 0; i < library.length && library[i] != null; i++)       
    library[i].print();    
 }     
}

1 个答案:

答案 0 :(得分:1)

您的规范说明了一切“Phone类的构造函数应该总结whitePages + yellowPages以获取书中的总页数,并将其作为超级调用中的单个参数传递给Book超类。”

您可以使用3个参数设置Phone构造函数 - 标题,白页和黄页

现在使用title为title和whitePages + yellowPages作为页面调用超类'构造函数