2012-03-02 9 views
0

は、私は本クラスを持っている:抽象クラスのDataOutputStreamメソッドを作成し、これをサブクラスに使用できますか?

public abstract class Book 
{ 
private String author, title; 
private int pages; 
private double price; 
Book next; 

public Book(String f, String t, int sider, double p) 
{ 
    author = a; 
    title = t; 
    pages = pa; 
    price = p; 
    next = null; 
} 

そしてサブクラスなどの小説、教科書などが挙げられます。 これらをDataOutputStreamでファイルに書き込むメソッドが必要です。 私はこのコードを以下に作ったが、私が正しい道にいるかどうかはわからない。これをサブクラスでどのように使うのですか?

public void writeObjectToFile() 
{ 
    try 
    { 
     FileOutputStream fos = new FileOutputStream("book.something"); 
     DataOutputStream dos = new DataOutputStream(fos); 

     dos.writeUTF(author); 
     dos.writeUTF(title); 
     dos.writeInt(pages); 
     dos.writeDouble(price);   


    }catch (IOException e){ 
     e.printStackTrace(); 
    } 
} 

のは、教科書クラスは、このようなものですとしましょう:

class Textbook extends Book 
{ 
private String subject; 

public Textbook(String a, String t,int pa, double p, String sub) 
    { 
    super(a, t, pa, p); 
    subject = sub; 
} 

任意のアイデア?私はObjectOutputStreamを使用することはできません。

答えて

1

このメソッドは、それ自身を作成するのではなく、OutputStreamを引数としてとる必要があります。

スーパークラスのフィールドを書き込むためにスーパーメソッドを呼び出すことでサブクラスを開始することができ、特定の場所でファイルを使用するようブッククラスによって強制されるのではなく、呼び出し側がデータを書き込む場所を選択できます。

このメソッドは、無視するのではなくIOExceptionをスローする必要があります。このようにして、発信者は自分が処理したいことを行うことができます。

+0

ありがとう、これは私が逃しているものです。本当に役に立ちました。 – user938773

関連する問題