class A { public void func1() { System.out.print("A func1 is calling! "); } } class B extends A { public void func1() { System.out.print("B func1 is calling! "); } public void func2() { System.out.print("B func2 is calling! "); } } class C { public static void main(String[] args) { A a = new B(); a.func1(); a.func2(); } }可以运行,
时间: 2024-02-14 20:05:29 浏览: 31
这段代码并不能运行,因为在class A中并没有定义func2()方法,而在class B中定义了func2()方法,因此在a.func2()调用时会出现编译错误,提示找不到func2()方法。如果你想要调用func2()方法,你需要将a引用转换为B类型,例如:
```java
B b = (B) a;
b.func2();
```
这样就可以成功调用B类中的func2()方法了。
相关问题
请给出下面代码的输出结果 clase Child extens Base { public void func1() { System.out.println("Child func1 print."); } public void func2() { System.out.println("Child func2 print."); } } public clase Base { private func1() { System.out.println("Base func1 print."); } public func2() { System.out.println("Base func2 print."); } public static void main(String args[]) { Base b = new child(); b.func1(); b.func2(); ((Child)b).func1(); ((Child)b).func2(); } }
输出结果为:
非法的符号:类 clase
应该是 class Child extends Base
Base func2 print.
Child func2 print.
Child func1 print.
Child func2 print。
解释:
在代码中,我们定义了一个 Base 类和一个 Child 类,Child 类继承自 Base 类。在 main 方法中,我们创建了一个 Child 类的实例,并将其赋值给一个 Base 类型的变量 b。然后我们调用了 b 的 func1 和 func2 方法,这两个方法都是在 Base 类中定义的,因此输出结果为 "Base func2 print."。接着我们强制将 b 转换为 Child 类型,并调用了 Child 类中的 func1 和 func2 方法,输出结果为 "Child func1 print." 和 "Child func2 print."。
class Father{ public void func1() { func2();} class Father { public void func1() { func2(); } public void func2() { System.out.println("AAA"); }}class Child extends Father { public void func1(int i) { System.out.println("BBB"); } public void func2() { System.out.println("CCC"); }}public class PolymorphismTest { public static void main(String[] args) { Child child = new Child(); Father father = new Father(); child.func1(); child.func2(); father.func1(); father.func2(); }}打印结果
这段代码存在语法错误,无法编译通过。我做了一些修改,修改后的代码如下:
```
class Father {
public void func1() {
func2();
}
public void func2() {
System.out.println("AAA");
}
}
class Child extends Father {
public void func1(int i) {
System.out.println("BBB");
}
public void func2() {
System.out.println("CCC");
}
}
public class PolymorphismTest {
public static void main(String[] args) {
Child child = new Child();
Father father = new Father();
child.func1(1);
child.func2();
father.func1();
father.func2();
}
}
```
运行这段代码会输出以下结果:
```
BBB
CCC
AAA
AAA
```
解析:
1. 首先创建一个 Child 对象 child 和一个 Father 对象 father。
2. 调用 child.func1(1) 时,因为 Child 类有 func1(int i) 方法,所以直接调用 Child 类的 func1(int i) 方法,打印 "BBB"。
3. 调用 child.func2() 时,因为 Child 类有 func2() 方法,所以直接调用 Child 类的 func2() 方法,打印 "CCC"。
4. 调用 father.func1() 时,因为 Father 类有 func1() 方法,所以直接调用 Father 类的 func1() 方法,而 Father 类的 func1() 方法中又调用了 func2() 方法,所以打印 "AAA"。
5. 调用 father.func2() 时,因为 father 是 Father 类的对象,所以直接调用 Father 类的 func2() 方法,打印 "AAA"。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)