阅读下面程序,写出指定语句的输出结果,并解释原因。 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 09:03:48 浏览: 72
输出结果为"C's m1",原因是因为对象o指向的是C类的一个实例,而C类中重写了静态方法m1(),所以调用静态方法m1()时会调用C类中的方法。因为静态方法是在编译时就确定的,不涉及多态性,所以即使o的类型是A,在调用静态方法m1()时还是会调用C类中的方法。
相关问题
public class 到 public static void main 之间可以写什么代码
在Java中,`public class` 定义了一个公共类,而 `public static void main(String[] args)` 是程序的主入口点,用于执行应用程序。通常在这两个部分之间的代码会包含以下几个部分:
1. 类的声明和成员变量(如果有的话):
```java
private String name; // 声明一个私有实例变量
List<String> items; // 声明一个列表类型的实例变量
// 可能的构造函数(如果需要)
public MyClass(String initialName) {
this.name = initialName;
}
```
2. 成员方法(类的公共、私有或受保护的方法):
```java
public void displayMessage() {
System.out.println("Hello, my name is " + name);
}
private void manipulateItems() {
items.add("Item 1");
}
```
3. 构造函数(如果类没有提供默认构造函数):
```java
// 如果需要自定义初始化过程
public MyClass() {
this("Default Name");
}
```
4. 实现接口或继承父类的方法:
```java
interface MyInterface {
void someMethod();
}
class ImplementsMyInterface implements MyInterface {
@Override
public void someMethod() {
// 实现接口的方法
}
}
```
5. 静态方法或静态变量:
```java
public static int calculateSum(int a, int b) {
return a + b;
}
```
请注意,`main` 方法前的部分通常是私有的,因为它们不是用户直接可见或操作的。当运行Java应用时,`main` 方法会被自动执行,开始执行类中的`main` 函数里的代码。
请阅读下面的程序,在空白处填写正确的代码,使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方法时,将输出"某某吃米饭"。
阅读全文
相关推荐
















