Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.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 为什么主方法在子类中不打印任何内容?_Java - Fatal编程技术网

Java 为什么主方法在子类中不打印任何内容?

Java 为什么主方法在子类中不打印任何内容?,java,Java,“mysecondclass”是超类“myfirstclass”的子类 应该继承超类“myfirstclass”的所有属性 它应该输出x的值,但是它什么也不打印 package myfirstproject; public class myfirstclass { protected int x = 10; //getter public void getX() { System.out.println(x); } public static

“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) { 
/* 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方法,尽管我已经在子类中声明了一个(我听说一个main方法就足够一个java文件了)
非常感谢您的帮助,请提前感谢

您有两种方法可以让您的代码按照自己的意愿运行

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


2) 只需将这两个类保持在同一个java文件中。然后,当您运行它时,它将只运行public类中默认的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
    }
}

你不理解这个函数

public static void main(String[] args)
在Java文档中:

公共静态void关键字表示Java1虚拟机(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

当有疑问时总是

您是如何运行的?在Java中,通常我们只需要一个主方法作为公共类中的条目,该类的名称也是文件名。所以您只需要将主方法从子类移动到父类。你会很好的。@yuanqingfei你可以在任何你喜欢的类中定义main方法,只要它不是一个内部类(这两个类都不是)。mysecondclass中的main方法是静态的,因此它实际上不用于重写第一个类中的(静态)方法。当你说“它总是要求我添加主方法”时,是谁?或者它是什么?@AndyTurner我知道,我通常说,在他的例子中,你可以看到只有一个公共类。这意味着它是主类。当您尝试调用main方法时,它只会找到main类的main方法。对于同一个java文件中的所有其他类,它们都没有用处。因此,他需要更改java文件名。“它将只在公共类中默认运行main方法。”java不要求在公共类中运行main方法,默认情况下也不运行任何类。Java运行您让它运行的类。如果调用
javamyproject.myfirstclass
,它将运行该类中的main方法;如果调用
java myproject.mysecondclass
,它将运行该类中的main方法。@AndyTurner您在Eclipse中尝试过吗?如果您没有在公共类中定义main方法,您就没有机会在secondclass中运行main方法。如果他使用命令行,我同意你的看法。