对象创建对象

Object creating object

我是一个非常新的培训程序员,我作业中的这个问题让我非常难过。我们目前正致力于用对象创建对象,我完全迷路了。我有一个 MediaDemo class,它应该从书中创建一个实例 class。我觉得我有点接近了,但错误一直在说它不能接受变量类型……这是来自 classes:

的代码
    public class Book 
{ 
    // The fields. 
    private String author; 
    private String title;
    private int pages;
    private String refNumber;
    private int borrowed;
    private boolean courseText;

/** 
 * Set the author and title fields when this object 
* is constructed. 
*/ 
    public Book( String bookAuthor, String bookTitle, int bookPages, boolean theCourseText) 
   { 
       author = bookAuthor; 
        title = bookTitle;
        pages = bookPages;
        refNumber = ("");
        courseText = theCourseText;
    }

public String printAuthor()
{
return author;
}

public String printTitle()
{
return title;
}

public void setRefNumber(String ref)
{
if(ref.length() == 3){
refNumber = ref;
}
else{
System.out.println("Please enter a String that's 3 characters long.");
}
}

public String printRef()
{
return refNumber;
}

public void borrow()
{
    borrowed += 1;
}
public int getBorrowed()
{
    return borrowed;
}

public void printDetails()
{
if(refNumber == ("")) {
System.out.println("Book Author: " + author + ". | Book Title: " + title + ". | Book Length: " + pages + " pages. refNumber: ZZZ | Borrowed Books: " + borrowed);
}
else {
System.out.println("Book Author: " + author + ". | Book Title: " + title + ". | Book Length: " + pages + " pages. | Number: " + refNumber + ". | Borrowed Books:     " + borrowed);
}
}
} 

感谢您在这方面的任何帮助,一旦我找到一个解决方案可以防止我在办公桌上敲打我的头,我会很高兴...

--更新--

/**
 * Write a description of class MediaDemo here.
 * 
 * @author ---
 * @version 2-17-16
 */
public class MediaDemo
{
 private Book book;
 private String bookAuthor;
 private String bookTitle;
 private int bookPages;
 private boolean theCourseText;
 public MediaDemo (String author,String title,int pages,boolean courseBook)
 {
     bookAuthor = author;
     bookTitle = title;
     bookPages = pages;
     theCourseText = courseBook;
     createBook();
 }

 private void createBook()

{
  book = new Book(bookAuthor, bookTitle, bookPages, theCourseText);
}
}

好的,这是本书的最新版本。

语句 book = new Book(); 实例化了一个新对象 book ,当你说 new Book() 时,它意味着调用 Book 构造函数

public Book( String bookAuthor, String bookTitle, int bookPages, boolean theCourseText) 
   { 
       author = bookAuthor; 
        title = bookTitle;
        pages = bookPages;
        refNumber = "(\"\")"; \result : ("")
        courseText = theCourseText;
    }

。在您的代码中,您没有提供创建对象书的新实例所需的参数。所以你可以尝试替换:

book = new Book();

book = new Book( "Scarlet", "I dunnu", 100, true); 

当然有参数对应的数据类型

您在书中有一个参数化构造函数... 但是当你调用时你调用的是一个非参数化的构造函数..

所以代码应该是

Book book = new Book(author, title, bookPages, theCourseText) ;

是的,它将创建一个新实例,并且在创建时将调用参数化构造函数.. 谢谢..

在 MediaDemo Class 中,您正在调用默认构造函数 Book() 但它没有在 Book Class 中声明。因为你有一个明确的构造函数
public Book( String bookAuthor, String bookTitle, int bookPages, boolean theCourseText) 您需要使用它或显式声明默认构造函数

在调用以下行之前,您必须为所有参数分配一些值 book = new Book( bookAuthor, bookTitle, bookPages, theCourseText);