繁体   English   中英

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

[英]why the main method is printing nothing in the sub class?

作为超类“ myfirstclass”的子类的“ mysecondclass”应该继承超类“ 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) { 
/* it 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方法,尽管我已经在子类中声明了一个(我听说一个主要方法是足够一个Java文件)非常感谢任何帮助,在此先感谢

您不了解该功能

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类是一种很好的做法。

public class Main {
    public static void main(String[] args) {
        // Call Your classes
    }
}

在代码中更加整洁有序!

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

java MyApp arg1 arg2

如有疑问,请务必阅读文档!

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

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

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

只需将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
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM