如何修复超级语句?

时间:2014-01-08 03:14:12

标签: java super bluej

我把我的超级语句放在正确的格式中,但我唯一的错误是它声明类java.lang.object中的构造函数对象不能应用于这部分代码的给定类型:

       super (openFile (filename)); 

这是我现在的代码:

     import    java.io.BufferedReader;
     import java.io.ByteArrayOutputStream;
     import java.io.File;
     import java.io.FileNotFoundException;
     import java.io.FileReader;
     import java.io.IOException;
     import java.io.OutputStream;
     import java.io.OutputStreamWriter;
         import java.security.MessageDigest;
         import java.security.NoSuchAlgorithmException;
         import java.util.Vector;import java.io.PrintWriter;
         import java.io.BufferedWriter;
         import java.io.FileWriter;
         import java.io.InputStream;
         import java.io.InputStreamReader;
         import java.io.Reader;

       public class Buffin 
      {             
 private static boolean temp;
 /////////////////////////////////
 private boolean isKeyboard;


 /** Connect to the disk file with the given name.  If this
  *  cannot be done, connect to the keyboard instead. */

 public Buffin (String filename)
 {    super (openFile (filename));
      isKeyboard = temp;
 }    //======================


 private static Reader openFile (String filename)
 {    try
      {    temp = false;
           return new FileReader (filename);  // IOException here
      }catch (IOException e)
      {    temp = true;
           return new InputStreamReader (System.in);
      }
 }    //======================


 /** Read one line from the file and return it.  
  *  Return null if at the end of the file. */

 public String readLine()
 {    if (isKeyboard)
      {    System.out.print (" input> ");
           System.out.flush();  // flush the output buffer
      }
      try
      {    return super.readLine(); // in BufferedReader
      }catch (IOException e)
      {    System.out.println ("Cannot read from the file");
           return null;
      }
 }    //============
}[/code]

3 个答案:

答案 0 :(得分:3)

您的类仅扩展Object类,并且没有名为openFile的方法或构造函数。如果你完全删除super电话,你会没事的。

答案 1 :(得分:1)

目前,您的班级Buffin未指定超级班级;这意味着它有一个超类,即java.lang.Object。没有构造函数在Reader中使用java.lang.Object

您可以将Reader作为字段存储在Buffin类中,或者您可以扩展一个在构造函数中接受一个的超类。

答案 2 :(得分:0)

Super涉及超类的构造函数,我看到类Buffin没有继承任何类。正如@Sotirios Delimanolis所说,没有构造函数接受Object类中的Reader。