无法使用包扩展类

时间:2014-05-11 12:23:07

标签: java packages

我有一个名为MyPackage1的包,其中包含2个公共类,一个名为Output.java,另一个名为Input.java Output.java文件的代码如下所示

package MyPackage1;
 public abstract class Output
    {
        public static void outln(String str)
        {
            System.out.println(str);
        }
        public void outlnn(String str)
        {
            System.out.println(str+"\n");
        }
        public void noutln(String str)
        {
            System.out.println("\n"+str);
        }
        public void out(String str)
        {
            System.out.print(str);
        }
        public void nout(String str)
        {
            System.out.print("\n"+str);
        }
    }

另一个名为Input.java的类类具有下面给出的代码。

package MyPackage1;
import java.io.*;
import java.util.Scanner;


public class Input extends Output   //error
{
    static BufferedReader  br=new BufferedReader(new InputStreamReader(System.in));
    static DataInputStream dr=new DataInputStream(System.in);
    static Scanner sr=new Scanner(System.in);

        public static String bcin() throws IOException
        {

            System.out.print("Input the Value : ");
            String string111=br.readLine();
            return(string111);
        }
        public static String dcin() throws IOException
        {
            System.out.print("Input the Value : ");
            String string111=dr.readLine();
            return(string111);
        }

每当我尝试编译输入时,我都会发布一些错误。截图链接为enter image description here

1 个答案:

答案 0 :(得分:1)

您正在尝试编译Input.java。 Input扩展了Output类。并且Output.java尚未编译,并且不在编译器的源路径中。因此,最简单的方法是一次编译两个类。转到包含MyPackage1的目录,然后键入

javac MyPackage1\Input.java MyPackage1\Output.java

虽然有几点说明:

  • Java 5完全过时了。我们现在在Java 8.下载并使用此版本。
  • 不要将源文件存储到JDK的bin目录中。这就是JDK的二进制文件所在的位置。您的源文件应该在其他位置。
  • 使用javac的-d选项将.class文件存储在与源目录不同的目录中。
  • 尊重Java命名约定。包都是小写的。
  • 我真的不明白为什么Output应该是一个抽象类,以及为什么Input应该扩展Output。输入是输出吗?如果没有,它就不应该延长它。