我正在完成Java编程课程的家庭作业,我无法理解子插件的概念。
以下是问题:
创建一个名为Book的类,其中包含标题和的数据字段 页数。包括这些字段的get和set方法。下一个, 创建一个名为Textbook的子类,其中包含一个附加字段 它拥有教科书的等级和其他方法 获取并设置成绩水平字段。写一个应用程序 演示使用每个类的对象。将文件保存为Book.java, Textbook.java和DemoBook.java。
这是我的Book.java代码:
public class Book
{
String bookTitle;
int numPages;
private void setBTitle(String title)
{
bookTitle = title;
}
private void setBPages(int pages)
{
numPages = pages;
}
private String getBTitle()
{
return bookTitle;
}
private int getBPages()
{
return numPages;
}
public void displayBookInfo()
{
System.out.println("The book's title is: " + bookTitle + ".");
System.out.println("The number of pages is: " + numPages + ".");
}
}
这是我的Texbook.java代码:
public class Textbook extends Book
{
int gradeLevel;
public int getGLevel()
{
return gradeLevel;
}
public void setGLevel(int level)
{
gradeLevel = level;
}
}
如果我确实将这两个部分更正确,我将如何在DemoBook.java文件中实现它?
任何帮助或指示都将不胜感激。
这是我的DemoBook.java文件的代码:
import java.util.Scanner;
public class DemoBook
{
public static void main(String[] args)
{
String BTitle;
int BPages;
int BLevel;
Book b = new Book();
Textbook t = new Textbook();
Book bt = new Textbook();
Scanner input = new Scanner(System.in);
System.out.println("Please enter the title of your book: ");
BTitle = input.nextLine();
System.out.println("Please enter the number of pages: ");
BPages = input.nextInt();
System.out.println("Please enter the grade level: ");
BLevel = input.nextInt();
b.setBTitle(BTitle);
b.setBPages(BPages);
t.setGLevel(BLevel);
b.displayBookInfo();
}
}
我将变量更改为private,这是我得到的编译器错误:
DemoBook.java:33: error: setBTitle(String) has private access in Book
b.setBTitle(BTitle);
^
DemoBook.java:34: error: setBPages(int) has private access in Book
b.setBPages(BPages);
^
2 errors
我仍然没有理解这一点。本章的标题是“继承简介”。
答案 0 :(得分:4)
代码V1:
我相信它只是要求你创建一个带有main()函数的DemoBook.java,它创建每种类型的一个,并做一些set和gets。代码本身对我来说似乎很好!
代码V2:
你必须让你的吸气剂和安装者都公开! Tomas和其他人的意思是让你的变量本身是私有的,字符串和两个整数。您通常希望所有成员变量都是私有的,并且您的getter和setter是公共的。此外,如果您将getter和setter设为私有,则甚至无法在派生类中访问它们!
我还会在你的书之间做更多的事情。尝试从一个和一个设置到另一个,打印出所有三个,疯狂! =)
答案 1 :(得分:1)
正如Danalog所说,课程很好,现在使用它们!试着为你能想到的一切做一个例子。
我建议制作一些Book对象,Book b = new Book();
并在其上调用一些方法,制作一些TextBooks,TextBook t = new TextBook();
。
最后Book bt = new TextBook();
。
全部玩弄它们并打印出一些结果。
编辑:@Tomas上面提出的很好的建议,在使用getter和setter时将变量设为私有。答案 2 :(得分:0)
这项任务试图让你熟悉多态性的概念。 有一个很好的概述here
答案 3 :(得分:0)
包含这些字段的get和set方法。
这通常意味着您的字段(即成员变量)应为private
,封装它们并要求使用get
和set
方法作为访问和修改这些变量的唯一方法。
如果我确实将这两个部分更正确,我将如何在DemoBook.java文件中实现它?
这是最简单的类,它只是一个测试类,看看你是否知道如何创建基类和派生类型的对象,并正确使用它们。这是应用程序的入口点,因此您将拥有public class DemoBook
和main
方法。
您应该制作一些测试用例以确保两个类的功能正常工作,并且可能使用{{1}打印出“fields”使用get
方法为它们指定值后的方法。