Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以为抽象类创建DataOutputStream方法并将其用于子类吗?_Java_Abstract_Dataoutputstream - Fatal编程技术网

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

Java 我可以为抽象类创建DataOutputStream方法并将其用于子类吗?,java,abstract,dataoutputstream,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 =

我有一个读书班:

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

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

通过这种方式,子类可以通过调用super方法来写入超类字段,调用方可以选择在何处写入数据,而不是被book类强制使用特定位置的文件


该方法还应该抛出IOException,而不是忽略它。这样,打电话的人就可以做他想做的事情。

非常感谢,这就是我错过的。真的很有帮助。