我可以为抽象类创建一个DataOutputStream方法并将其用于子类吗?

时间:2012-03-02 07:45:31

标签: java abstract 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 个答案:

答案 0 :(得分:1)

该方法应该将OutputStream作为参数,而不是自己创建它。

这样,子类可以通过调用super方法来编写超类字段,调用者可以选择写入数据的位置,而不是书类强制使用特定位置的文件。

该方法还应抛出IOException,而不是忽略它。这样,调用者就可以做他想要处理的事情。