阅读下面程序,写出指定语句的输出结果,并解释原因。 public class Test_Hide_Override { public static void main(String... args){ A o = new C(); o.m1(); //① o.m2(); //② ((B)o).m1(); //③ ((A)(B)o).m1(); //④ ((A)(B)o).m2(); //⑤ } } class A{ public static void m1(){ System.out.println("A's m1"); } public void m2(){ System.out.println("A's m2"); } } class B extends A{ public static void m1(){ System.out.println("B's m1"); } public void m2(){ System.out.println("B's m2"); } } class C extends B{ public static void m1(){ System.out.println("C's m1"); } public void m2(){ System.out.println("C's m2"); } } 语句①的输出结果为 ,原因是
时间: 2023-06-02 19:03:48 浏览: 43
输出结果为"C's m1",原因是因为对象o指向的是C类的一个实例,而C类中重写了静态方法m1(),所以调用静态方法m1()时会调用C类中的方法。因为静态方法是在编译时就确定的,不涉及多态性,所以即使o的类型是A,在调用静态方法m1()时还是会调用C类中的方法。
相关问题
请阅读下面的程序,在空白处填写正确的代码,使Son类的eat方法重写Father的eat方法。 public class Father { public void eat(String name){ System.out.println(name+"吃番薯"); } } class Son ______________{ @Override public void eat(String name){ System.out.println(name+"吃米饭"); } }
应该填写 `extends Father`,即:
```
class Son extends Father {
@Override
public void eat(String name){
System.out.println(name+"吃米饭");
}
}
```
这样,Son类就继承了Father类,并重写了其中的eat方法。当调用Son的eat方法时,将输出"某某吃米饭"。
在类 st.main 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application怎么解决
这个错误表示您的 Java 程序在 st.main 类中找不到 main 方法。main 方法是 Java 程序的入口点,如果没有正确实现,程序就无法启动。
解决这个问题的方法是在 st.main 类中添加一个符合要求的 main 方法,如下所示:
```java
public class main {
public static void main(String[] args) {
// 在这里编写程序代码
}
}
```
请注意,main 方法必须是公共的(public)、静态的(static)和无返回值的(void)。如果您正在开发 JavaFX 应用程序,则应该将 st.main 类扩展为 javafx.application.Application,如下所示:
```java
public class main extends javafx.application.Application {
@Override
public void start(Stage primaryStage) throws Exception {
// 在这里编写 JavaFX 应用程序代码
}
public static void main(String[] args) {
launch(args);
}
}
```
这样就可以在应用程序中使用 JavaFX API,并且启动应用程序需要使用 launch() 方法。