2011-12-04 46 views
0

我正在完成Java编程课程的家庭作业任务,并且无法理解subclcass的概念。Java中子类的实现

这里有一个问题:

定义类图书,其中包含标题和 页数数据字段。包括获取和设置这些字段的方法。接下来, 创建一个名为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(); 

    } 
} 

我改变的变量私有的,这是编译器错误,我得到:

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

通过我的阅读,'DemoBook.java'将成为“使用每个类的对象进行演示的应用程序”。 – ruakh

+2

我也建议让变量保密。你有获取和提供访问权限的获取者和设置者。 – user219882

回答

4

代码V1:

我相信它只是要求你做一个DemoBook.java与创建每种类型之一,并做一些设置和获取一个main()函数。代码本身对我来说似乎很好!

代码V2:

你必须有你的getter和setter都躲得大众!托马斯和其他人的意思是让你的变量本身是私人的,字符串和两个整数。你通常希望所有的成员变量都是私有的,并且你的getter和setter是公开的。另外,如果你让你的getter和setter是私人的,你甚至不能在派生类中访问它们!

我也会在书本之间做更多的设置和设置。尝试从一个变为另一个,打印出所有三个,疯狂! =)

0

这个任务试图让你熟悉多态的概念。 有一个很好的概述here

1

正如Danalog所说,类很好,现在使用它们!试着做一个你可以想到的尝试的例子。

我建议制作一些Book对象,Book b = new Book();并调用一些方法,制作一些TextBooks,TextBook t = new TextBook();
最后Book bt = new TextBook();

与他们一起玩,打印出一些结果。

编辑:@Tomas以上的伟大建议,使变量私人,因为你正在使用getters和setter。

0

包括这些字段的get和set方法。

这通常意味着你的域(即成员变量)应private封装他们需要使用的getset方法来访问和修改这些变量的唯一途径。

如果我确实有这两个部分是正确的,我将如何实现这个在DemoBook.java文件?

这是所有最简单的类,它只是一个测试类,以查看您是否知道如何创建基类和派生类型的对象,并正确使用它们。这是应用程序的入口点,因此您需要在其中有public class DemoBookmain方法。

你应该做一些测试用例,以确保这两个类的功能是否正常工作,并可能打印出“田”get方法您分配值,将其与set后方法。