class A{ public void m1 (String s){ System.out. println(s+"Call A's m1()");} public void m2(String s){ System.out. println(s+"Call A's m2()");m1(s); } } class B extends A{ public void m1 (String s){ System. out.println(s+"Call B’ sm1 ()") ;m2(s); } } public class Test3 { public static void main (String args [ ]){ Bb=new B();b.m1 ("Child") ;) }
时间: 2024-02-23 15:56:18 浏览: 14
这段代码的运行结果应该是:
ChildCall B's m1()
ChildCall A's m2()
ChildCall B's m1()
首先创建了一个 B 对象 b,然后调用 b 的 m1 方法,输出 "ChildCall B's m1()",接着调用了父类 A 的 m2 方法,输出 "ChildCall A's m2()",最后又调用了子类 B 的 m1 方法,输出 "ChildCall B's m1()"。
相关问题
public+class+foof public+static+void+main+(String[]+args)f String+s; System.out.println("s="+++s);
首先,你的代码存在一些语法错误。以下是正确的代码:
```java
public class foof {
public static void main(String[] args) {
String s;
System.out.println("s=" + s);
}
}
```
在上述代码中,我们声明了一个名为 `foof` 的公共类,并在该类中定义了 `main` 方法。在 `main` 方法中,我们声明了一个 `String` 类型的变量 `s`,然后尝试将其打印输出。由于在赋值前使用了未初始化的变量 `s`,这段代码会引发编译错误。
如果你想修复这个错误,需要给变量 `s` 赋予一个初始值,例如:
```java
public class foof {
public static void main(String[] args) {
String s = "Hello, world!";
System.out.println("s=" + s);
}
}
```
现在,变量 `s` 被赋予了一个字符串值,并且代码可以正常编译和运行。输出将是 `s=Hello, world!`。
阅读下面程序,写出指定语句的输出结果,并解释原因。 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"); } } 语句①的输出结果为 ,原因是
输出结果为"C's m1",原因是因为对象o指向的是C类的一个实例,而C类中重写了静态方法m1(),所以调用静态方法m1()时会调用C类中的方法。因为静态方法是在编译时就确定的,不涉及多态性,所以即使o的类型是A,在调用静态方法m1()时还是会调用C类中的方法。