为什么主要方法在子类中什么也不打印?

时间:2019-05-28 19:56:23

标签: java

“ mysecondclass”是超类“ myfirstclass”的子类 应该继承超类“ myfirstclass”的所有属性 并期望输出x的值,但不输出任何内容

package myfirstproject;

public class myfirstclass {
    protected int x = 10;
    //getter 
    public void getX() {
     System.out.println(x);
    }
    public static void main(String[] args) { 
/* he asked me to define this main method here although it's useless in this situation 
   */
    }
}
class mysecondclass extends myfirstclass {
    public static void main(String[] args) {
    mysecondclass mysecondobject = new mysecondclass();
    mysecondobject.getX(); //prints nothing 
    }
}

我真的是Java的新手,实际上我还在学习它的基础知识 我也不知道为什么它总是要求我在超类中添加main方法,尽管我已经在子类中声明了一个(我听说一个main方法足以容纳一个java文件) 非常感谢您的帮助,在此先感谢

3 个答案:

答案 0 :(得分:2)

您不了解该功能

public static void main(String[] args)

在Java Docs中:

  

public static void关键字表示Java 1虚拟机(JVM)   解释器可以调用程序的main方法来启动程序   (公共),而无需创建类的实例(静态),并且   程序在执行以下操作时不会将数据返回到Java VM解释器(void)   结束。

您有两个

public static void main(String[] args)

在两个不同的班级!您正在运行或编译使用myfirstclass的示例,因此对于这种类型的示例或测试,只有一个Java类Main

是一个好习惯。
public class Main {
    public static void main(String[] args) {
        // Call Your classes
    }
}

在代码中更加整洁有序!

还有另一件事。要通过命令行运行,请使用此类命令

java MyApp arg1 arg2

如有疑问,始终read the Docs!

答案 1 :(得分:1)

您有两种方法可以让代码按需运行

1)创建2个Java文件。一个是myfirstclass.java,第二个是mysecondclass.java。每个人都有自己的主要阶级。因此,您可以根据需要启动任何主要方法。

2)只需将这2个类保留在同一java文件中。那么当您运行它时,它将仅在默认情况下在公共类中运行main方法。

答案 2 :(得分:-2)

只需将public关键字更改为第二类。如果您使用的是在线编译器,则通常会在公共类中寻找main方法。

package myfirstproject;

 class myfirstclass {
    protected int x = 10;
    //getter 
    public void getX() {
     System.out.println(x);
    }

}
public class mysecondclass extends myfirstclass {
    public static void main(String[] args) {
    mysecondclass mysecondobject = new mysecondclass();
    mysecondobject.getX(); //printx X
    }
}