“ 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文件) 非常感谢您的帮助,在此先感谢
答案 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
}
}