2011-12-04 68 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後方法。